[解決済み] リストボックスの項目が選択されたらWPF DataTemplateを変更する
2023-03-06 15:42:14
質問
ListBoxの項目が選択されているかどうかによってDataTemplateを変更する必要があります(選択されたときに異なる/より多くの情報を表示する)。
問題のListBoxのアイテムをクリックしても、DataTemplateの一番上の要素(StackPanel)にGotFocus/LostFocusイベントが発生せず(タブ操作のみ)、お手上げ状態です。
どのように解決するのですか?
最も簡単な方法は、"ItemContainerStyle" にテンプレートを提供し、"ItemTemplate" プロパティには与えないことです。以下のコードでは、2つのデータ・テンプレートを作成しています。1つは"unselected"、もう1つは"selected"の状態に対応するものです。次に、アイテムを含む実際のリストボックスである "ItemContainerStyle" 用のテンプレートを作成します。デフォルトの "ContentTemplate" を "Unselected" 状態に設定し、次に "IsSelected" プロパティが真のときにテンプレートを交換するトリガーを提供します。 注:コードの後ろの "ItemsSource" プロパティを単純化のためにストリングのリストに設定しています)。
<Window.Resources>
<DataTemplate x:Key="ItemTemplate">
<TextBlock Text="{Binding}" Foreground="Red" />
</DataTemplate>
<DataTemplate x:Key="SelectedTemplate">
<TextBlock Text="{Binding}" Foreground="White" />
</DataTemplate>
<Style TargetType="{x:Type ListBoxItem}" x:Key="ContainerStyle">
<Setter Property="ContentTemplate" Value="{StaticResource ItemTemplate}" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="ContentTemplate" Value="{StaticResource SelectedTemplate}" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<ListBox x:Name="lstItems" ItemContainerStyle="{StaticResource ContainerStyle}" />
関連
-
[解決済み] アセンブリから型を読み込めなかったエラー
-
[解決済み] 16進数値0x00は無効な文字です。
-
[解決済み] スマートクライアント・ソフトウェアファクトリーの体験談
-
[解決済み] Windowsイベントログで参照される「フレームワークのバージョン」とは何ですか?
-
[解決済み] gacutil.exeはどこですか?
-
[解決済み] VB.NETでファイル名を一意のサフィックスに変更するには?
-
[解決済み] LINQ: フィルタリング基準で SingleOrDefault と FirstOrDefault() を使用する場合
-
[解決済み] CryptographicException「キーセットが存在しない」、ただしWCF経由に限る
-
[解決済み] 文字列から数字を抽出する正規表現
-
[解決済み] Math.Round(2.5)はなぜ3でなく2を返すのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】プラットフォームが同じでも「不正なフォーマットでプログラムを読み込もうとしました。
-
[解決済み] [Solved] ファイル *.mdf をデータベースとしてアタッチできない
-
[解決済み】警告。同じ依存アセンブリの異なるバージョン間で競合が見つかりました。
-
[解決済み] COMExceptionエラー80040154を修復する方法は?
-
[解決済み] Microsoft.NETFrameworkとMicrosoft.NETFramework64の違いは何ですか?
-
[解決済み] 24:00:00 を超える値を持つ .Net Timespan を格納するための正しい SQL タイプは何ですか?
-
[解決済み] CryptographicException「キーセットが存在しない」、ただしWCF経由に限る
-
[解決済み] 文字列から数字を抽出する正規表現
-
[解決済み] MemoryStreamから文字列を取得する方法は?
-
[解決済み] WPFのStaticResourceとDynamicResourceの違いは何ですか?