2009-11-23 63 views
2

我將對象集合綁定到WPF中的列表框,爲了簡單起見,我們將說我綁定的對象有3個屬性:名稱,URL,IsBold。我想要做的是,如果IsBold設置爲true,它會顯示爲不同的樣子,再次作爲一個示例,我想將名稱出現在其中的TextBlock設置爲粗體。這是甚麼可能嗎?如果我的某個屬性具有特定的值,我可以使用不同的樣式或其他東西嗎? (我可以做任何像XAML中的if/else)嗎?我真的不知道從哪裏開始。如何使用數據綁定更改XAML文件的樣式?

說我有這在我的DataTemplate

<TextBlock Style="{StaticResource notBold}" Text="{Binding Path=Name}"></TextBlock> 

而且如果IsBold設置爲true該特定項目,我想它是(注意從「notBold」到「isBold」的風格變化)

<TextBlock Style="{StaticResource isBold}" Text="{Binding Path=Name}"></TextBlock> 

或類似的東西。我想更一般的問題。是否有可能根據數據綁定的項目改變某些東西的外觀?如果這是不可能的,那麼將如何完成這樣的事情?不知何故,通過代碼?

感謝

回答

6

你通常做的是什麼寫一個DataTemplate在列表中的對象,然後有一個DataTrigger設置基礎上,IsBold屬性將TextBlock/TextBox的fontWeight設置。

<DataTemplate DataType="DataItem"> 
    <TextBlock x:Name="tb" Text="{Binding Name}"/> 
    <DataTemplate.Triggers> 
     <DataTrigger Binding="{Binding IsBold}" Value="true"> 
      <Setter TargetName="tb" Property="FontWeight" Value="Bold" /> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding IsBold}" Value="false"> 
      <Setter TargetName="tb" Property="FontWeight" Value="Normal" /> 
     </DataTrigger> 
    </DataTemplate.Triggers> 
</DataTemplate> 

你最好再設置DataItems的列表,你的組合框的ItemsSource屬性(通過數據綁定或直接在代碼隱藏myComboBox.ItemsSource=myDataItems)。剩下的事情由WPF爲你完成。

相關問題