2012-04-19 41 views
5

我想創建一個ItemsControl,它負責顯示按元數據排序的各種項目。每個項目可以有多個元數據。例如,「對話」類型的項目可以具有「章節」,「行爲」和「音量」元數據。WPF - 組風格:我們只能綁定到「名稱」屬性嗎?

在搜索WPF中的分組工作方式時,我發現了GroupStyles和PropertyGroupDescription類。

我創建了我自己的類,它繼承PropertyGroupDescription並返回一個類型爲「Metadata」的對象。

是否有無論如何,在我的ItemsControl的GroupStyle DataTemplate我可以綁定到返回的對象(即:「元數據」對象),然後顯示其屬性,我希望?還是我被迫綁定到「名稱」?

換句話說:

<ItemsControl.GroupStyle> 
    <GroupStyle> 
     <GroupStyle.HeaderTemplate> 
      <DataTemplate> 
        Am I forced to bind to "Name" here ? 
      </DataTemplate> 
     </GroupStyle.HeaderTemplate> 
    </GroupStyle> 
</ItemsControl.GroupStyle> 

回答

13

通過GroupStyle默認DataContext可以綁定到這個CollectionViewGroup Properties。但是,如果需要,當然你可以設置其他BindingSource

如果你想在你的小組使用的第一個對象:

<TextBlock Text="{Binding Path=Items[0].YourStringProperty}" /> 
+1

但項目是項目的數組,而不是GroupDescription的對象。即元數據屬性仍然無法訪問? – Dani 2013-07-03 10:22:14

0
做當綁定到自定義對象,它會用它的toString()方法嘗試顯示

默認情況下,是不是這個名字(當然,toString()方法是打印由名無論如何默認)。你可以嘗試覆蓋ToString()方法來打印別的東西,你會明白我的意思。

但是,當然你可以定義你自己的DataTemplate並綁定到不同的屬性。

<DataTemplate> 
<TextBlock Text="{Binding XXXXX}"/> 
</DataTemplate>