2011-05-04 50 views
2

我有一個WPF組合框綁定到集合List<Users>。我已經申請一個DataTemplate顯示使用TextBlock的名字和這個按預期工作:根據數據綁定中的值有條件地更改WPF組合框項的前景ItemsSource項

 <ComboBox Margin="5" ItemsSource="{Binding Path=TheUsers}" Name="cboUsers"> 
      <ComboBox.ItemTemplate> 
       <DataTemplate> 
        <TextBlock Margin="10" Text="{Binding Path=FirstName}"> 
        </TextBlock> 
       </DataTemplate> 
      </ComboBox.ItemTemplate> 
     </ComboBox>` 

我有我的User類名爲IsActive一個項目是一個布爾值。如果是,那麼我想將TextBlock的前景設置爲海軍。

我花了這麼多時間在應該如此簡單並且遍佈整個網絡,但大多數文章都談論改變整體顏色或綁定到xaml中的另一個元素。

我試着實現一個DataTrigger和一小時後刪除代碼,因爲它不工作。它不會識別我的字段名稱。有沒有人有一個非常簡單的指導如何做到這一點或什麼是最好的方法?

回答

4

正如你顯然沒有處理完所有欄目,這種風格應該做你想要什麼:

<TextBlock.Style> 
    <Style TargetType="{x:Type TextBlock}"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding IsActive}" Value="True"> 
       <Setter Property="Foreground" Value="Navy"/> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</TextBlock.Style> 

將不承認我的字段名。

你不能綁定到字段,故事的結尾。

+0

謝謝你,但必須有這樣做的方式。是否有另一種方法可以根據綁定到ComboBox項目的項目中的值來有條件地更改項目的顏色? – Brindo 2011-05-04 21:50:13

+0

爲什麼不把它作爲公共財產? – 2011-05-04 21:51:26

+0

對不起。我對Wpf和.NET頗爲陌生,雖然編程了188年。我想我可能在這裏有一些不正確的術語。 User類對象列表公開了一個屬性calles FirstName和IsActive。他們都與更多公衆一起。這是我需要訪問的屬性。我從來沒有在.NET中使用數據集或字段。 Thta很骯髒。這有幫助嗎? – Brindo 2011-05-04 21:55:08

相關問題