【发布时间】:2014-03-24 10:15:08
【问题描述】:
说我有一个包含 10 个项目的列表 someList,我将通过 itemsControl 在我的页面上显示它们,如下所示:
<ItemsControl DataContext="{Binding [someViewModel]}"
BorderBrush="Black"
ItemSource="{Binding someList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border BorderThickness="1" Background="Green">
<StackPanel MouseDown="{Binding Path=DataContext.someCommand,
RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type ItemsControl}}}"
Command Parameter="{Binding someID}">
<TextBlock Text="{Binding something}">
</StackPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
我确实能够触发someCommand 方法并且我确实能够传入someID 作为输入参数。现在我想知道如何更新 stackPanel 背景颜色,使其看起来像“选中”。这意味着现在所有项目都将具有绿色背景,当我单击其中一个堆栈面板时,该堆栈面板应将背景更改为红色并将其他项目更改回绿色
【问题讨论】:
-
为什么不在一个组中将
ItemTemplate更改为RadioButton,并在选中/未选中时设置样式,或者更好地使用ListBox进行单选和样式设置? -
或者使用ListView和dataTemplate。
标签: c# wpf itemscontrol stackpanel