使用资源设置文本框的前景色

本文关键字:前景色 置文本 资源 | 更新日期: 2023-09-27 18:35:37

我有一个资源文件,其中包含要在项目中使用的颜色。我已经成功地使用这些资源来设置 WPF 窗口和控件的样式。我正在努力实现的是使用这些相同的资源以编程方式更改文本框的前景色。我正在使用 C# 和 WPF。

这是我的资源文件,它存储在/Resources/Colours.xaml 文件中。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<!--Application Colour pallette-->
<SolidColorBrush x:Key="DefaultColour" Color="#FF193B60"></SolidColorBrush>
<SolidColorBrush x:Key="BaseColour" Color="#FF2E5076"></SolidColorBrush>
<SolidColorBrush x:Key="HighlightColour" Color="#FF506F93"></SolidColorBrush>
<SolidColorBrush x:Key="ForegroundColour" Color="#FFB7D7F9 "></SolidColorBrush>
<SolidColorBrush x:Key="AlternateColour" Color="#FFB7D7F9"></SolidColorBrush>
<SolidColorBrush x:Key="HeaderColour" Color="#FF02162B"></SolidColorBrush>
<Color x:Key="Media.DefaultColour">#FF193B60</Color>
<Color x:Key="Media.BaseColour">#FF2E5076</Color>
<Color x:Key="Media.HighlightColour">#FF506F93</Color>
<Color x:Key="Media.ForegroundColour">#FFB7D7F9</Color>
<Color x:Key="Media.AlternateColour">#FFB7D7F9</Color>
<Color x:Key="Media.HeaderColour">#FF02162B</Color>

我已经合并了 App.xaml 文件中的资源字典

   <Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://Application:,,,/Resources/Colours.xaml" />
</Application.Resources>

任何人都可以为我提供指导吗?提前谢谢。

使用资源设置文本框的前景色

注释后

对文本框使用 Style.Trigger:

<TextBox ...>
    <TextBox.Style>
        <Style  TargetType="{x:Type TextBox}">
            <Setter Property="Foreground" Value="{...focusedcolor...}" />
            <Style.Triggers>
                <Trigger Property="IsFocused" Value="False">
                    <Setter Property="Foreground"  Value="{...unfocused...}" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>