Windows 8 ストア アプリケーションを開発しています。アイテムのリストを表示する Listview があります。選択したアイテムに基づいて、選択したリスト アイテムの背景色を変更する必要があります。背景色は、選択したアイテムによって異なります。選択したアイテムの背景色をすべてのアイテムに適用することができました。特定の選択したアイテムに対して行いたいです。
前もって感謝します。
Windows 8 ストア アプリケーションを開発しています。アイテムのリストを表示する Listview があります。選択したアイテムに基づいて、選択したリスト アイテムの背景色を変更する必要があります。背景色は、選択したアイテムによって異なります。選択したアイテムの背景色をすべてのアイテムに適用することができました。特定の選択したアイテムに対して行いたいです。
前もって感謝します。
それは確かに可能です!これを行うには、一般に次の 2 つの方法があります。
まず、背景の値を現在のリストの選択された項目にバインドできます。何かのようなもの:
<ListView
Background="{Binding RelativeSource={RelativeSource Self}, Path=SelectedItem.Color}"
..>
ただし、その特定のコードが機能するためには、バインド先のアイテムに、Brush (SolidColorBrush など) または Color (私が信じている) のいずれかである Color プロパティが必要です。Binding
のConverter
プロパティを使用し、アイテムのプロパティ (文字列の場合はアイテム自体) を適切な SolidColorBrush に変換することで、これを回避できます。
2 番目の方法は、SelectionChanged イベントを追加し、コード ビハインドで変更することです。何かのようなもの:
<ListView
SelectionChanged="ColorSelector_SelectionChanged"
..>
private void ColorSelector_SelectionChanged(object sender, SelectionChangedEventArgs args)
{
if(args.NewValue != null)
{
//Somehow get the color you need
(sender as ListView).Background = varYouGot; // the Brush you made
}
else
{
(sender as ListView).Background = defaultValue; // Some default value, possibly new SolidColorBrush(Colors.Transparent)
}
}
お役に立てれば!ハッピーコーディング!