首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何覆盖FluentAvalonia样式

如何覆盖FluentAvalonia样式
EN

Stack Overflow用户
提问于 2022-07-26 20:20:56
回答 2查看 168关注 0票数 0

在FluentAvalonia中为Avalonia使用.NET样式。

假设我想编辑默认样式,将按钮背景设置为AccentColor3,并在AccentColor2上悬停。我该怎么做?

首先,设置这种风格是有效的,但是设置ThemeAccentBrush3不起作用。我如何将重音设置成一种既适用于黑暗主题又适用于浅色主题的方式?

代码语言:javascript
运行
复制
<Style Selector="Button">
    <Setter Property="Background" Value="{DynamicResource SystemAccentColorDark3}" />
</Style>

其次,我认为最好的方法是创建一个Avalonia字典文件

代码语言:javascript
运行
复制
<ResourceDictionary xmlns="https://github.com/avaloniaui"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <StaticResource x:Key="ButtonBackground" ResourceKey="SystemAccentColorDark3" />
    <StaticResource x:Key="ButtonBackgroundPointerOver" ResourceKey="SystemAccentColorDark2" />
</ResourceDictionary>

然后在App.axaml中引用

代码语言:javascript
运行
复制
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceInclude Source='avares://Common.Avalonia.App/Styles/DarkResources.axaml'/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

但是,样式被加载到更低的位置,因此还不存在。

代码语言:javascript
运行
复制
<Application.Styles>
    <sty:FluentAvaloniaTheme />

因此..。

代码语言:javascript
运行
复制
Static resource 'SystemAccentColorDark3' not found.

最干净的解决方案是什么?

EN

Stack Overflow用户

回答已采纳

发布于 2022-08-01 21:02:35

我设法获得了以.35不透明作为默认样式的“重音”样式,方法是将“重音”样式转换为不同的语法以覆盖资源.想出这个翻译的引用是相当复杂的,但它起作用了。

词典需要插入在FluentAvalonia之后的App.xaml中

此外,为了查阅可用资源列表,我可以运行FluentAvalonia示例应用程序,该应用程序有一个页面,可以可视化整个资源和颜色列表。

作为绑定以适应主题的注意事项: StaticResource只运行一次,DynamicResource跟踪更改。但是,要覆盖资源键,需要StaticResource

代码语言:javascript
运行
复制
<ResourceDictionary xmlns="https://github.com/avaloniaui"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:flu="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia">

    <SolidColorBrush x:Key="ButtonBackgroundApp" Color="{DynamicResource SystemAccentColorLight2}" Opacity=".35" />
    <StaticResource x:Key="ButtonBackground" ResourceKey="ButtonBackgroundApp" />

    <LinearGradientBrush x:Key="ButtonBorderBrushApp" StartPoint="0,0" EndPoint="0,3" Opacity=".35">
        <LinearGradientBrush.GradientStops>
            <GradientStop Offset="0.33" Color="{StaticResource ControlStrokeColorOnAccentSecondary}" />
            <GradientStop Offset="1.0" Color="{StaticResource ControlStrokeColorOnAccentDefault}" />
        </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>
    <StaticResource x:Key="ButtonBorderBrush" ResourceKey="ButtonBorderBrushApp" />

    <SolidColorBrush x:Key="ButtonBackgroundPointerOverApp" Color="{DynamicResource SystemAccentColorLight2}"
                     Opacity=".30" />
    <StaticResource x:Key="ButtonBackgroundPointerOver" ResourceKey="ButtonBackgroundPointerOverApp" />

    <LinearGradientBrush x:Key="ButtonBorderBrushPointerOverApp" StartPoint="0,0" EndPoint="0,3" Opacity=".35">
        <LinearGradientBrush.GradientStops>
            <GradientStop Offset="0.33" Color="{StaticResource ControlStrokeColorOnAccentSecondary}" />
            <GradientStop Offset="1.0" Color="{StaticResource ControlStrokeColorOnAccentDefault}" />
        </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>
    <StaticResource x:Key="ButtonBorderBrushPointerOver" ResourceKey="ButtonBorderBrushPointerOverApp" />

    <SolidColorBrush x:Key="ButtonBackgroundPressedApp" Color="{DynamicResource SystemAccentColorLight2}" Opacity=".27" />
    <StaticResource x:Key="ButtonBackgroundPressed" ResourceKey="ButtonBackgroundPressedApp" />

    <SolidColorBrush x:Key="ButtonBorderBrushPressedApp" Color="{DynamicResource ControlFillColorTransparent}"
                     Opacity=".35" />
    <StaticResource x:Key="ButtonBorderBrushPressed" ResourceKey="ButtonBorderBrushPressedApp" />

    <SolidColorBrush x:Key="ButtonBackgroundDisabledApp" 
                     Color="{DynamicResource TextOnAccentFillColorDisabled}" Opacity=".35" />
    <StaticResource x:Key="ButtonBackgroundDisabled" ResourceKey="ButtonBackgroundDisabledApp" />

    <SolidColorBrush x:Key="ButtonBorderBrushDisabledApp"
                     Color="{DynamicResource ControlFillColorTransparent}" Opacity=".35" />
    <StaticResource x:Key="ButtonBorderBrushDisabled" ResourceKey="ButtonBorderBrushDisabledApp" />
</ResourceDictionary>
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73129320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档