为什么我的关注点不在标签上

本文关键字:标签 我的 关注点 为什么 | 更新日期: 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();
}