我有两个列表框和一个按钮。该按钮将List1.SelectedItems发送到List2。我想为已经添加到List2的List1中的项目添加一个视觉提示,类似于选择项目时的视觉提示。有没有可能向它们添加一个属性,这样就可以实现这一点?
_______ _______
| | _ | |
| List1 | |>| | List2 |
|_______| |_______|下面是使用IsSelected属性修改背景的示例。
<DataTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="listItem" Property="Background" Value="Blue" />
</Trigger>
</DataTemplate.Triggers>我想添加一个额外的属性,称为"IsAdded",如果设置为True,它也会影响背景。这样的事情是可能的吗,还是有替代的方法呢?
谢谢
发布于 2012-04-28 02:28:24
我希望你使用ViewModel类,或者类似的类来表示你的项目。你所需要的-是将属性IsAdded添加到item类中,并且,当你处理Button.Click事件时(或者更好的是-你的ViewModel有ICommand属性,它可以在List1 to List2中插入所选的项目),你可以为添加到List2中的所选项目感到悲伤。
private bool isAdded;
public bool IsAdded
{
get { return isAdded; }
set
{
if (isAdded == value)
return;
isAdded = value;
OnPropertyChanged("IsAdded");
}
}其中OnPropertyChanged方法将引发INotifyPropertyChanged接口(see msdn article)的PropertyChanged事件。
在处理Button.Click时,您知道要添加哪些元素,因此将下面这行代码放在那里:
...
foreach(var item in List1.SelectedItems)
{
item.IsAdded = true;
}
...然后,将以下触发器添加到您的DataTemplate.Triggers集合:
<DataTrigger Binding="{Binding Path=IsAdded, Mode=OneWay}" Value="True">
<Setter TargetName="listItem" Property="Background" Value="Red" />
</DataTrigger>https://stackoverflow.com/questions/10354061
复制相似问题