0

我有两个列表框和一个按钮。Button 将 List1.SelectedItems 发送到 List2。我想为 List1 中已添加到 List2 的项目添加视觉提示,类似于选择项目时的视觉提示。是否可以向它们添加属性以便完成此操作?

 _______             _______
|       |     _     |       |
| List1 |    |>|    | List2 |
|_______|           |_______|

下面是使用 IsSelected 属性修改背景的示例。

<DataTemplate.Triggers> 
    <Trigger Property="IsSelected" Value="True"> 
        <Setter TargetName="listItem" Property="Background" Value="Blue" /> 
    </Trigger> 
</DataTemplate.Triggers>

我想添加一个名为“IsAdded”的附加属性,如果设置为 True,它也会影响背景。这样的事情是否可能,或者是否有替代方法?

谢谢

4

1 回答 1

1

我希望你使用ViewModel类,或类似的来代表你的项目。您需要的 - 是将属性 IsAdded 添加到项目类中,并且,当您处理Button.Click事件时(或者更好的是 - 您ViewModelICommand属性将 List1 中的选定项目插入到 List2 中),您可以对添加到的选定项目感到难过添加了它们所在的 List2。

private bool isAdded;
public bool IsAdded
{
    get { return isAdded; }
    set
    {
        if (isAdded == value)
            return;
        isAdded = value;
        OnPropertyChanged("IsAdded");
    }
}

whereOnPropertyChanged方法将引发接口PropertyChanged事件(请参阅 msdn 文章)。INotifyPropertyChanged

当你处理 时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>
于 2012-04-27T18:28:23.960 回答