2010-06-16 51 views
0

我有一个列表框绑定到数据输入屏幕的对象列表。项目模板包括文本块,复选框和组合框。WPF Databound Listbox

当列表框填充我想给的TextBlocks的前景颜色变为红色,如果object.value1 =真,object.value2 = 0

任何想法?

回答

0

下面的代码工作:

XAML

<ListBox Name="ListBox1"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <DataTemplate.Triggers> 
        <MultiDataTrigger> 
         <MultiDataTrigger.Conditions> 
          <Condition Binding="{Binding Value1}" 
             Value="1" /> 
          <Condition Binding="{Binding Value2}" 
             Value="0" /> 
         </MultiDataTrigger.Conditions> 
         <MultiDataTrigger.Setters> 
          <Setter TargetName="RootBorder" 
            Property="Border.Background" 
            Value="#EEE" /> 
         </MultiDataTrigger.Setters> 
        </MultiDataTrigger> 
       </DataTemplate.Triggers> 
       <Border Name="RootBorder"> 
        <TextBlock Text="{Binding Text}" /> 
       </Border> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

public class Model 
{ 
    public Int32 Value1 { get; set; } 
    public Int32 Value2 { get; set; } 
    public String Text { get; set; } 
} 

代码

models.Add(new Model() { Value1 = 0, Value2 = 0, Text = "Item #1" }); 
models.Add(new Model() { Value1 = 1, Value2 = 0, Text = "Item #2" }); 
models.Add(new Model() { Value1 = 0, Value2 = 1, Text = "Item #3" }); 
models.Add(new Model() { Value1 = 0, Value2 = 0, Text = "Item #4" }); 
models.Add(new Model() { Value1 = 1, Value2 = 0, Text = "Item #5" }); 
models.Add(new Model() { Value1 = 0, Value2 = 1, Text = "Item #6" }); 
models.Add(new Model() { Value1 = 0, Value2 = 0, Text = "Item #7" }); 
models.Add(new Model() { Value1 = 1, Value2 = 0, Text = "Item #8" }); 
models.Add(new Model() { Value1 = 1, Value2 = 1, Text = "Item #9" }); 

ListBox1.ItemsSource = models; 
0

使用MVVM,并让您的视图模型公开一个属性,它检查条件并返回颜色。然后前景色到属性绑定:-)