Почему IsFocused не срабатывает на ярлыке - PullRequest
2 голосов
/ 12 июля 2011

Я просто хочу определить триггер, который изменяет цвет фона метки, когда он сфокусирован, но он не работает.Делать то же самое с кнопкой - это нормально.Что-то не так?!?!У меня также возникла такая же проблема с Border и textblock.

Обновление кода 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>

1 Ответ

3 голосов
/ 12 июля 2011

Не все элементы управления являются фокусируемыми по умолчанию, установите Focusable в true и посмотрите, поможет ли это.

Одна из проблем, с которой вы можете столкнуться, заключается в том, что по умолчанию метка не получает фокус от событий мыши.

Я не знаю, существует ли чистый XAML-способ установки фокуса, но вы можете обработать событие мыши:

<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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...