【问题标题】:WPF - change global styles from codeWPF - 从代码更改全局样式
【发布时间】:2017-04-09 12:12:35
【问题描述】:

我在 ResourceDictionary 文件中有以下样式

<Color x:Key="LightCyan">LightCyan</Color>
<SolidColorBrush x:Key="LightCyanBrush" Color="{StaticResource LightCyan}" />

<Style x:Key="TextBoxStyle" TargetType="TextBox">
    <Setter Property="Width" Value="150" />
    <Setter Property="Margin" Value="0,0,0,3" />
</Style>

<Style TargetType="TextBox" BasedOn="{StaticResource TextBoxStyle}">
    <Style.Triggers>
        <Trigger Property="IsReadOnly" Value="False">
            <!-- Change brush color at run time -->
            <Setter Property="Background" Value="{StaticResource LightCyanBrush}" />
        </Trigger>
    </Style.Triggers>
</Style>

我需要在运行时从颜色十六进制代码更改 IsReadOnly = False 时的 TextBox 背景颜色。

【问题讨论】:

    标签: c# wpf resourcedictionary


    【解决方案1】:

    最简单的方法是使用DynamicResource 而不是StaticResource,例如:

    <Window.Resources>
        <SolidColorBrush x:Key="TextBoxEditableBackgroundBrush"
                         Color="LightCyan" />
        <Style x:Key="TextBoxStyle"
               TargetType="TextBox">
            <Setter Property="Width"
                    Value="150" />
            <Setter Property="Margin"
                    Value="0,0,0,3" />
        </Style>
        <Style TargetType="TextBox"
               BasedOn="{StaticResource TextBoxStyle}">
            <Style.Triggers>
                <Trigger Property="IsReadOnly"
                         Value="False">
                    <!-- Change brush color at run time -->
                    <Setter Property="Background"
                            Value="{DynamicResource TextBoxEditableBackgroundBrush}" /> <!-- note here -->
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    

    然后在代码中你只需改变你的画笔:

    var brush = new SolidColorBrush(Colors.Red);
    brush.Freeze();
    this.Resources["TextBoxEditableBackgroundBrush"] = brush;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多