我有一个listview,其中包含一个包装文本框的边框(以及示例代码中未显示的其他元素)。我希望当文本框被键盘聚焦以更改包装它的边框的属性时。
<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执行此操作。
答案 0 :(得分:0)
当我尝试运行它时,我也得到错误&#34;无法在样式设置器上设置TargetName属性&#34;。这表示您无法在TextBox控件的样式设置器中设置Border控件的属性(这并不会让我感到惊讶。)
你可以做的是用边框控件本身的样式设置它,使用DataTrigger绑定到文本框的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>