2014-04-08 34 views
0

我有一個ObservableCollection<MyClass>。而MyClass有一個屬性叫做IsColored將DataBinding添加到DataTriggers中的模型

我創建了一個ListView,它應該將所有具有屬性IsColored的行都變爲true。

<ListView ItemsSource="{Binding MyClassList}"> 
    <hControls:ListView.Style> 
     <Style TargetType="ListView"> 
      <Setter Property="Foreground" Value="Blue" /> 
     </Style> 
    </hControls:ListView.Style> 

... 

</ListView> 

爲了滿足色彩的條件,我的ListView我要補充一個DataTrigger

<Style.Triggers> 
    <Trigger Property="IsColored" Value="True"> 
     <Setter Property="Foreground" Value="Blue" /> 
    </Trigger> 
</Style.Triggers> 

但問題是,IsColored無法識別。

如何添加綁定到該屬性,以便我可以從DataTrigger訪問它?

回答

3

我不知道爲什麼@Anatoliy放棄這麼快刪掉了他的答案,因爲他是對的......你需要使用DataTrigger

<Style.Triggers> 
    <DataTrigger Binding="{Binding IsColored}" Value="True"> 
     <Setter Property="Foreground" Value="Blue" /> 
    </DataTrigger> 
</Style.Triggers> 

你的評論說,你想這個代碼時得到這個錯誤:

Cannot resolve property 'IsColored' in data context of type MyNameSpace.MyUserControl

這只是意味着你Style沒有訪問ListView的項目。看着你的代碼,看起來好像你試圖爲ListViewItem定義一個Style,但在ListView Style之內。相反,您需要使用ListView.ItemContainerStyle PropertyStyle應用於各個項目。試試這個:

<ListView ItemsSource="{Binding MyClassList}"> 
    <ListView.ItemContainerStyle> 
     <Style TargetType="{x:Type ListViewItem}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding IsColored}" Value="True"> 
        <Setter Property="Foreground" Value="Blue" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </ListView.ItemContainerStyle>  
    ...  
</ListView> 
+0

非常感謝你 –

+0

+1:我立即沒有注意到他在關於錯誤的評論中的消息,所以我刪除了答案=)。 –

0

在第一種情況下,你使用正Style.Trigger,使用DataTrigger這樣的:

<DataTrigger Bindind="{Binding Path=IsColored}" Value="True"> 
    <Setter Property="Foreground" Value="Blue" /> 
</DataTrigger> 

關於此錯誤:

Cannot resolve property 'IsColored' in data context of type MyNameSpace.MyUserControl

它告訴,你沒有正確設置DataContext

+0

它不起作用。它說:<無法解析MyNameSpace.MyUserControl類型的數據上下文中的屬性'IsColored'> –