-1

我在 WPF 应用程序中进行了边界控制。我想改变设定焦点的背景。为此,编写了以下代码,但它不起作用。

Style _Style = new System.Windows.Style(typeof(Border));
Trigger _Trigger = new Trigger();
_Trigger.Property = Border.IsFocusedProperty;
_Trigger.Value = true;
_Trigger.Setters.Add(new Setter(Border.BackgroundProperty, Brushes.Green));
_Style.Triggers.Add(_Trigger);

Border1.Style = _Style;
4

2 回答 2

1

这适用于 XAML 定义的样式:

<Style x:Key="FocusBorder" TargetType="{x:Type Border}">
    <Setter Property="Focusable" Value="True"/>
    <Setter Property="Background" Value="Blue"/>
    <Style.Triggers>
        <Trigger Property="IsFocused" Value="True">
            <Setter Property="Background" Value="Green"/>
        </Trigger>
    </Style.Triggers>
</Style>

....

<Border x:Name="MyBorder" Width="100" Height="100" VerticalAlignment="Center" HorizontalAlignment="Center" Style="{DynamicResource FocusBorder}" SnapsToDevicePixels="True"/>

和背后的代码:

Window_Loaded(object sender, RoutedEventArgs e)
{
    MyBorder.Focus();
}

默认情况下 Border 不是Focusable,所以你必须设置Focusabletrue。还要记住,键盘焦点仅限于输入元素,边框不是其中之一。

于 2013-04-26T15:13:01.497 回答
1

忽略您可以(并且几乎肯定应该)在 XAML 中执行此操作的事实,问题是双重的:

  1. 默认情况下,边框不可聚焦。
  2. 你可能想要IsKeyboardFocusWithin,不只是IsFocused
于 2013-04-26T15:14:52.240 回答