2011-07-07 13 views
1

WPF應用程序,.NET 3.5。WPF:數據綁定到ListView,以便listview項的ForeColor反映bool屬性值的變化

我有一個ListView控制,我綁定了一組業務類。

我想項的前景色結合的類的一個布爾屬性(比如:MyClass的主動),使活性,以淺灰色禁用時當項目被顯示爲黑色。

我希望listview項目可以隨時改變它們的顏色,我的意思是當我改變Active我的databound集合中的一個實例的值,其各自的listview項目會自動改變其顏色。

我需要什麼來實現這個目標?我在網上發現了很多有關WPF數據綁定的教程,一些關於StackOverflow的問題,但並不完全一樣,我不想通過試驗和錯誤來開始將我的解決方案結合在我所能做的所有事情上。

我知道INotifyPropertyChanged的(爲我的企業級),的IValueConverter(但我需要它的布爾?),DataTrigger

但其拼圖塊做我真的需要,什麼是最簡單的方法來實現我的目標?

回答

2

我只是做一個風格,並將這種風格應用於您的列表項目。提供你的對象實現INotifyPropertyChanged和屬性更改事件被引發時IsActive的變化,這將改變前臺格雷如果IsActive = False

<Style x:Key="DisableInactiveTextStyle" TargetType="{x:Type TextBlock}"> 
    <Setter Property="Foreground" Value="Black" /> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding IsActive}" Value="False"> 
      <Setter Property="Foreground" Value="LightGray" /> 
     </DataTrigger> 
    </Style.Trigger> 
</Style> 

<TextBlock Style="{StaticResource DisableInactiveTextStyle}" ... /> 
+0

我會第二種方法,尤其是考慮到你沒有使用MVVM。 – NickHeidke

+0

它可以在兩種方式下工作嗎?我的意思是,當您將IsActive切換回真時,前景色會變回黑色?或者,我應該用另一個替換類似於第一個?無論如何,我會在一分鐘內嘗試,但只是問:) –

+0

是的,它確實有效。這完全是我需要的 - 謝謝! –

0

我會建議創建一個需要bool並返回一個顏色的IValueConverter。然後,您可以將ForeColor綁定到MyClass.Active屬性並使用創建的轉換器。

+0

所以我並不需要INotifyPropertyChanged的用於這一目的?它仍然會捕獲_myCollection [7] .Active = false; _? –

+0

你在使用MVVM嗎? – NickHeidke

+0

不,我不是... –