WPF:从后面的代码更改列表框项的前景属性

时间:2012-06-06 05:28:43

标签: wpf listbox

我在WPF中有ListBox控件,它由一些可观察的类型集合填充:“Bus”。

Bus是一个包含两个属性的类

  1. BusName
  2. BusType
  3. 所以根据胸围类型,这里的项目应该有两种颜色

    用于总线类型:

    1. 睡眠者 - 绿色
    2. 非睡眠者 - 蓝色
    3. 所有这些都应该来自WPF代码。

      有没有人知道如何这样做.. [我不是WPF专家......一些细节会更有帮助。]

2 个答案:

答案 0 :(得分:0)

设置BusType的Integer值 让我们说吧 睡眠者= 1 非睡眠= 2

只需在集合中为BusTypeID

添加一个属性即可

    <Style.Triggers>
            <DataTrigger Binding="{Binding BusTypeID}" Value="1">
                    <Setter Property="Background" Value="Green"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding BusTypeID}" Value="2">
                    <Setter Property="Background" Value="Blue"/>
            </DataTrigger>

    </Style.Triggers> </Style >

答案 1 :(得分:0)

你也可以通过后面的代码来做同样的事情..我们有以下方法来实现这一点..我希望这会对你有帮助..

DataTrigger datatrigger = new DataTrigger();
datatrigger.Binding = new Binding("BusTypeID");
datatrigger.Value = 1;
datatrigger.Setters.Add(new Setter(ListBoxItem.BackgroundProperty, Brushes.Green));
listbox.Triggers.Add(datatrigger);

DataTrigger datatrigger2 = new DataTrigger();
datatrigger2.Binding = new Binding("BusTypeID");
datatrigger2.Value = 2;
datatrigger2.Setters.Add(new Setter(ListBoxItem.BackgroundProperty, Brushes.Red));
listbox.Triggers.Add(datatrigger2);