質問
2010年7月8日木曜日 16:49
こんばんは。
タイトルにあるようにListView選択時の色とフォーカスが外れた時の色を同じにしたいのですが
どのようにすればいいのかがわかりません。
理由としてコンテキストメニュー表示等でフォーカスが外れると選択された箇所の色が
非アクティブ色になるのでそれをアクティブ色にしたいのです。
以上、よろしくお願いします。
すべての返信 (8)
2010年7月9日金曜日 2:18 ✅回答済み
トリガーで設定しておけば大丈夫そうですよ。
(参考)
方法 : トリガーを使用して、ListView で選択された項目のスタイルを設定する
http://msdn.microsoft.com/ja-jp/library/ms743015.aspx
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
2010年7月11日日曜日 6:17 ✅回答済み
うちではひとつ前の「2010年7月9日 4:26」(表示はGMTなのかな)の返信の状態で動作しています。
ということはどこかに ListView や GridView に対する Style や Template があってそれが邪魔しているんだと思います。
調査して一時的にでもコメントにして実験してみてください。
えムナウ@わんくま同盟 Microsoft MVP Visual Studio C# Since 2005/01-2010/12
2010年7月9日金曜日 2:47
返信、ありがとうございます。
以下のようにやってみましたが上手くいきませんでした…。
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="true" />
<!--<Condition Property="Selector.IsSelectionActive" Value="true" />-->
</MultiTrigger.Conditions>
<Setter Property="Background" Value="{x:Static SystemColors.HighlightBrush}" />
</MultiTrigger>
</Style.Triggers>
何が不十分なのでしょうか?
以上、よろしくお願い致します。
2010年7月9日金曜日 3:00
おかしいですね?? ご提示された同じコードをこちらで試す限り、ListViewからフォーカスが外れても背景色(青っぽい色)を保っているんですが・・・
ご質問の意味を取り違えているかな?
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
2010年7月9日金曜日 4:26
報告していただいた内容にあれれ?と思いましたのでWindowsXPと7の環境で試してみました。
しかし依然として非アクティブ色(グレーっぽい色)になってしまいます。
コードは以下のよう記述しました。
<Window.Resources>
<Style TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="true" />
<!--<Condition Property="Selector.IsSelectionActive" Value="true" />-->
</MultiTrigger.Conditions>
<Setter Property="Background" Value="{x:Static SystemColors.HighlightBrush}" />
</MultiTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<ListView ItemsSource="{Binding Persons}"
IsSynchronizedWithCurrentItem="True">
<ListView.ContextMenu>
<ContextMenu>
<MenuItem Header="この人を表示" Command="{Binding ShowCommand}" CommandParameter="{Binding Persons.CurrentItem}" />
</ContextMenu>
</ListView.ContextMenu>
<ListView.View>
<GridView>
<GridViewColumn Header="名前" DisplayMemberBinding="{Binding Name}"/>
<GridViewColumn Header="年齢" DisplayMemberBinding="{Binding Age}"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>
以上、よろしくお願いします。
2010年7月9日金曜日 15:22
以下を参考にして、ItemContainerStyleに設定して下さい。
【WPF】ListViewの行(Item)の見た目を変えちゃえ!
http://pro.art55.jp/?eid=878658
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
2010年7月9日金曜日 17:45
返信ありがとうございます。
ItemContainerStyleを設定してみましたが依然として状況は同じです。
少し調べてみると以下のようにして色を変更してる方がいました。
<Style TargetType="ListBoxItem">
<Style.Resources>
<!--SelectedItem without focus-->
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="LightBlue" Opacity=".4"/>
</Style.Resources>
</Style>
確かに色は変わるのですがこれをアクティブ色である{x:Static SystemColors.HighlightBrush}とすると例外が出て変更出来ませんでした。
何か良い方法はないものでしょうか?
以上、よろしくお願いします。
2010年7月13日火曜日 19:28
返信、ありがとうございます。
了解しました。
他の方の環境では正常との事ですので回答マークを付けさせて頂きます。