WPF-当DateTemplate内的文本框处于焦点时,更改datatemplate子属性

WPF-当DateTemplate内的文本框处于焦点时,更改datatemplate子属性,wpf,listview,triggers,Wpf,Listview,Triggers,我有一个带有边框的listview,其中包含一个文本框(以及示例代码中未显示的其他元素)。当文本框以键盘为焦点时,我希望更改包装它的边框的属性 <ListView ItemsSource="{Binding activeLists}"> <ListView.ItemTemplate> <DataTemplate> <Border x:Name="border">

我有一个带有边框的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执行此操作。

当我尝试运行此操作时,还出现错误“无法在样式设置器上设置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>