WPF-当DateTemplate内的文本框处于焦点时,更改datatemplate子属性
我有一个带有边框的listview,其中包含一个文本框(以及示例代码中未显示的其他元素)。当文本框以键盘为焦点时,我希望更改包装它的边框的属性WPF-当DateTemplate内的文本框处于焦点时,更改datatemplate子属性,wpf,listview,triggers,Wpf,Listview,Triggers,我有一个带有边框的listview,其中包含一个文本框(以及示例代码中未显示的其他元素)。当文本框以键盘为焦点时,我希望更改包装它的边框的属性 <ListView ItemsSource="{Binding activeLists}"> <ListView.ItemTemplate> <DataTemplate> <Border x:Name="border">
<ListView ItemsSource="{Binding activeLists}">
<ListView.ItemTemplate>
<DataTemplate>
<Border x:Name="border">
<TextBox Text="something">
<TextBox.Style>
<Style>
<Style.Triggers>
<Trigger Property="TextBox.IsFocused" Value="True">
<Setter TargetName="border" Property="TextBox.Background" Value="Red"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
如果在触发器TargetName=“border”内使用,则找不到该项。
如果可能,请仅从XAML执行此操作。当我尝试运行此操作时,还出现错误“无法在样式设置器上设置TargetName属性”。这表明您不能在TextBox控件的样式设置器中设置Border控件的属性(这并不让我感到惊讶) 您可以改为使用边框控件本身的样式设置它,使用DataTrigger绑定到textbox的IsFocused属性:
<Border>
<Border.Style>
<Style TargetType="Border">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsFocused, ElementName=textBox}" Value="true">
<Setter Property="Background" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<TextBox Name="textBox" Text="something"/>
</Border>