我有一个被圆角边框包围的文本框。它们都具有相同的背景颜色,以使它们显示为单个数据输入框。当用户单击文本框时,文本框的背景和边框会改变颜色。当样式在我的 MainWindow 中时,我有这个工作。但是,我试图将我的所有样式从 MainWindow 中的 XAML 抽象到中央资源字典。这样做时,我发现更改边框背景颜色的 DataTrigger 不起作用,因为 ElementName 不再在范围内(至少我认为这是问题所在)。我试图通过在测试项目/解决方案中这样做来简化事情,但似乎找不到让数据触发器工作的方法。我只有两个 XAML 文件。一个是我的 MainWindow,另一个是我的资源字典。
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<ResourceDictionary Source="/MainSkins.xaml"/>
</Window.Resources>
<Grid HorizontalAlignment="Left" Width="307" Margin="83,0,0,0">
<Border Style="{StaticResource AnimatedInputTextBoxBorder}"
Margin="10,76,10,151">
<TextBox Name="txtTransitRoutingNumber" Style="{StaticResource
AnimatedInputTextBox}"
HorizontalAlignment="Left" Height="73" Margin="9,9,0,0"
TextWrapping="Wrap" Text=""
VerticalAlignment="Top"
Width="267"/>
</Border>
</Grid>
</Window>
这是我的资源字典,正如我上面提到的,它位于与 MainWindow.xaml 完全不同的文件中:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1">
<Style x:Key="AnimatedInputTextBoxBorder" TargetType="{x:Type Border}">
<Setter Property="Background" Value="#DADADA"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Padding" Value="5"/>
<Setter Property="CornerRadius" Value="15"/>
<Setter Property="BorderBrush" Value="#DADADA"/>
<Style.Triggers>
<!--THIS DATA TRIGGER IS NOT WORKING-->
<DataTrigger Binding="{Binding Path=IsFocused}" Value="true">
<Setter Property="Background" Value="#C2E4F6" />
<Setter Property="BorderBrush" Value="#C2E4F6"/>
</DataTrigger>
</Style.Triggers>
</Style>
<Style x:Key="AnimatedInputTextBox" TargetType="{x:Type TextBox}">
<Setter Property="Background" Value="#DADADA"/>
<Setter Property="Foreground" Value="#000000" />
<Setter Property="BorderThickness" Value="0"/>
<Style.Triggers>
<Trigger Property="IsFocused" Value="True">
<Setter Property="Background" Value="#C2E4F6"/>
</Trigger>
</Style.Triggers>
</Style>
</ResourceDictionary>
任何帮助将不胜感激,因为我是 XAML 的新手。