在 WPF 项目的 XAML 中更改其 GotFocus 事件的用户控件边框
Change usercontrol border on its GotFocus-event within the XAML of a WPF-Project
我有一个 UserControl,它包含一个包含 Border 的 Grid:
<UserControl Focusable="True" Name="uctrlScenePanel">
<Grid MouseDown="Grid_MouseDown">
<Border BorderThickness="0" BorderBrush="Black">
</Border>
</Grid>
我现在想在用户控件 "uctrlScenePanel" 获得焦点后更改 Border-Thickness,但我无法让它工作,而且我真的找不到有用的 Eventtrigger-Tutorials 可以理解,因为我我对 WPF 很陌生。
编辑:
d.moncada的回答很有帮助!我的 xaml 现在看起来像这样:
<Border BorderBrush="Black">
<Border.Style>
<Style TargetType="Border">
<Setter Property="BorderThickness" Value="0" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsKeyboardFocusWithin, ElementName=uctrlScenePanel}" Value="true">
<Setter Property="BorderThickness" Value="2" />
<Setter Property="Background" Value="Green" />
</DataTrigger>
<DataTrigger Binding="{Binding IsKeyboardFocusWithin, ElementName=uctrlScenePanel}" Value="false">
<Setter Property="BorderThickness" Value="0" />
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
我还有问题,因为用户控件的聚焦行为很奇怪,但那是另一回事了...这个问题已为我解决,感谢您的教训 ;)
您可以使用 DataTrigger
.
绑定到 UserControl
IsFocused
属性
<UserControl Focusable="True" x:Name="uctrlScenePanel">
<Grid MouseDown="Grid_MouseDown">
<Border BorderBrush="Black">
<Broder.Style>
<Style TargetType="Border">
<Setter Property="BorderThickness" Value="1"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsFocused, ElementName=uctrlScenePanel}" Value="True">
<Setter Property="BorderThickness" Value="0"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
</Grid>
</UserControl>
我有一个 UserControl,它包含一个包含 Border 的 Grid:
<UserControl Focusable="True" Name="uctrlScenePanel">
<Grid MouseDown="Grid_MouseDown">
<Border BorderThickness="0" BorderBrush="Black">
</Border>
</Grid>
我现在想在用户控件 "uctrlScenePanel" 获得焦点后更改 Border-Thickness,但我无法让它工作,而且我真的找不到有用的 Eventtrigger-Tutorials 可以理解,因为我我对 WPF 很陌生。
编辑: d.moncada的回答很有帮助!我的 xaml 现在看起来像这样:
<Border BorderBrush="Black">
<Border.Style>
<Style TargetType="Border">
<Setter Property="BorderThickness" Value="0" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsKeyboardFocusWithin, ElementName=uctrlScenePanel}" Value="true">
<Setter Property="BorderThickness" Value="2" />
<Setter Property="Background" Value="Green" />
</DataTrigger>
<DataTrigger Binding="{Binding IsKeyboardFocusWithin, ElementName=uctrlScenePanel}" Value="false">
<Setter Property="BorderThickness" Value="0" />
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
我还有问题,因为用户控件的聚焦行为很奇怪,但那是另一回事了...这个问题已为我解决,感谢您的教训 ;)
您可以使用 DataTrigger
.
UserControl
IsFocused
属性
<UserControl Focusable="True" x:Name="uctrlScenePanel">
<Grid MouseDown="Grid_MouseDown">
<Border BorderBrush="Black">
<Broder.Style>
<Style TargetType="Border">
<Setter Property="BorderThickness" Value="1"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsFocused, ElementName=uctrlScenePanel}" Value="True">
<Setter Property="BorderThickness" Value="0"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
</Grid>
</UserControl>