为什么我的关注点不在标签上
本文关键字:标签 我的 关注点 为什么 | 更新日期: 2023-09-27 18:01:44
我只想定义一个触发器,在以下情况下改变Label背景颜色专注,但它不起作用。对按钮做同样的事情是可以的。有什么问题吗?我也有同样的问题与边框和文本块。
更新代码xaml:
<Window.Resources>
<SolidColorBrush x:Key="GridLineBrush" Color="#8DAED9" />
<SolidColorBrush x:Key="HeaderWeekDayBackground" Color="#A5BFE1" />
<Style x:Key="borderStyle" TargetType="Control">
<Setter Property="Background" Value="{StaticResource HeaderWeekDayBackground}" />
<Style.Triggers>
<Trigger Property="IsFocused" Value="true">
<Setter Property="Background" Value="Blue" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Button Style="{StaticResource borderStyle}"
Grid.Row="0" >
</Button>
<Label Focusable="True" Style="{StaticResource borderStyle}"
Grid.Row="1" >
</Label>
</Grid>
</Window>
不是所有的控件默认都是可聚焦的,将Focusable
设置为true
,看看是否有帮助。
您可能遇到的一个问题是,默认情况下Label不接收来自鼠标事件的焦点。
我不知道是否有一个干净的只有xml的方式来设置焦点,但你可以处理一个鼠标事件:
<Label Focusable="True" Content="Test" MouseLeftButtonUp="Label_MouseLeftButtonUp">
<Label.Style>
<Style TargetType="Label">
<Style.Triggers>
<Trigger Property="IsFocused" Value="True">
<Setter Property="Background" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
</Label.Style>
</Label>
//Note that this is not a "proper" click.
private void Label_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
var label = sender as Label;
label.Focus();
}