-1

WPF アプリケーションで Border Control を使用しました。そして、セットフォーカスの背景を変更したい。そのために以下のコードを書いているのですが、うまくいきません。

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ため、 に設定Focusableする必要がありますtrue。また、キーボード フォーカスは入力要素に制限されていることにも注意してください。入力要素の 1 つではありません。

于 2013-04-26T15:13:01.497 に答える
1

XAML でこれを行うことができる (そしてほぼ確実にそうすべきである) という事実を無視すると、問題は 2 つあります。

  1. デフォルトでは、ボーダーはフォーカス可能ではありません。
  2. IsKeyboardFocusWithinだけでなく、おそらく必要ですIsFocused
于 2013-04-26T15:14:52.240 に答える