私には何がありますか?
ListBox
XML ファイルからの項目が入力されています。 DynamicResource
forプロパティと、 inStyle
のトリガーが指定されています。IsSelected
ItemContainerStyle
私は何をしたいのでしょうか?
フォーカスが から外れた後も、選択した項目を強調表示したままにしたいですListBox
。
どのような問題に直面しているのでしょうか?
項目を選択すると、IsSelected
トリガーで指定されたスタイルが機能します。ただし、フォーカスをリスト ボックスの外に移動すると (Tab キーを押すか、他のコントロールをクリックする)、選択した項目のスタイルが失われます。選択した項目のスタイルを保持する方法はありますか?
前もって感謝します!
ベストアンサー1
参照された回答場合によっては、これで問題が解決しますが、コントロールが無効/読み取り専用の場合に機能しなくなり、カラー スキームを利用せずに上書きしてしまうため、理想的ではありません。ListBox タグに次のコードを追加することをお勧めします。
<ListBox....>
<ListBox.Resources>
<Style TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border Name="Border" Padding="2" SnapsToDevicePixels="true">
<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter TargetName="Border" Property="Background"
Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.Resources>
</ListBox>
これにより、リスト ボックス項目が選択されるたびに (コントロールの状態に関係なく)、その項目のハイライト背景色が設定されます。
私の回答は、これらの回答に対してすでに与えられた回答と、次のブログの助けに基づいています。http://blogs.vbcity.com/xtab/archive/2009/06/29/9344.aspx