1

最新バージョンの WPF Toolkit を使用しています。AutoCompleteBox のスタイルを設定しようとしていますが、「IsFocused」トリガーが機能していないようです。基本的に、TextBox スタイルのように動作させたいので、AutoCompleteBox 用に作成しました。TextBox スタイルを AutoCompleteBox の TextBoxStyle プロパティに割り当てようとしても、IsFocused トリガーが起動することはありません。

コード ビハインドをいじってみたところ、OnGotFocus と OnLostFocus をオーバーライドすると、それらが呼び出されないことに気付きました。しかし、いくつかのイベント ハンドラーを GotFocus および LostFocus イベントに接続すると、最終的に何かが起こることがわかります。イベントへの配線が IsFocused の変更を確認する唯一の方法である場合、それは醜いハックのように思えます。これを回避する方法はありますか、それとも別の方法がありますか?

私の TexBox スタイル

<Style TargetType="TextBox" x:Key="TextBoxStyle">
    <Setter Property="Background" Value="{StaticResource TextBoxBackground}"/>
    <Setter Property="Foreground" Value="{StaticResource Foreground}"/>
    <Setter Property="CaretBrush" Value="{StaticResource Foreground}"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type TextBox}">
                <Grid Background="{TemplateBinding Background}" SnapsToDevicePixels="true">
                   <ScrollViewer x:Name="PART_ContentHost" Margin="1"/>
                </Grid>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="true">
                        <Setter Property="Background" Value="{StaticResource TextBoxBackgroundSelected}"/>
                    </Trigger>
                    <Trigger Property="IsFocused" Value="true">
                        <Setter Property="Background" Value="{StaticResource TextBoxBackgroundSelected}"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

私の AutoCompleteBox スタイル

<Style TargetType="WpfToolkitInput:AutoCompleteBox" x:Key="AutoCompleteBoxStyle">
<Setter Property="Background" Value="{StaticResource TextBoxBackground}"/>
<Setter Property="Foreground" Value="{StaticResource Foreground}"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="TextBoxStyle" Value="{StaticResource TextBoxStyle}"/>
<Style.Triggers>
  <Trigger Property="IsMouseOver" Value="true">
    <Setter Property="Background" Value="{StaticResource TextBoxBackgroundSelected}"/>
  </Trigger>
  <Trigger Property="IsFocused" Value="true">
    <Setter Property="Background" Value="{StaticResource TextBoxBackgroundSelected}"/>
  </Trigger>
</Style.Triggers>

何か案は?

お時間をいただきありがとうございます!

4

1 に答える 1