首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建ListBoxItem属性

创建ListBoxItem属性
EN

Stack Overflow用户
提问于 2012-04-28 00:06:27
回答 1查看 131关注 0票数 0

我有两个列表框和一个按钮。该按钮将List1.SelectedItems发送到List2。我想为已经添加到List2的List1中的项目添加一个视觉提示,类似于选择项目时的视觉提示。有没有可能向它们添加一个属性,这样就可以实现这一点?

代码语言:javascript
复制
 _______             _______
|       |     _     |       |
| List1 |    |>|    | List2 |
|_______|           |_______|

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

代码语言:javascript
复制
<DataTemplate.Triggers> 
    <Trigger Property="IsSelected" Value="True"> 
        <Setter TargetName="listItem" Property="Background" Value="Blue" /> 
    </Trigger> 
</DataTemplate.Triggers>

我想添加一个额外的属性,称为"IsAdded",如果设置为True,它也会影响背景。这样的事情是可能的吗,还是有替代的方法呢?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-28 02:28:24

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

代码语言:javascript
复制
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时,您知道要添加哪些元素,因此将下面这行代码放在那里:

代码语言:javascript
复制
...
foreach(var item in List1.SelectedItems)
{
    item.IsAdded = true;
}
...

然后,将以下触发器添加到您的DataTemplate.Triggers集合:

代码语言:javascript
复制
<DataTrigger Binding="{Binding Path=IsAdded, Mode=OneWay}" Value="True">
    <Setter TargetName="listItem" Property="Background" Value="Red" />
</DataTrigger>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10354061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档