0
我想將我的datagrid頭綁定到網格的DataContext上的屬性。現在,我得到它的工作,但我認爲這是一個臨時的解決方案:如何從DataGridColumn.Header綁定到ViewModel屬性?
<DataGrid x:Name="grid" ItemsSource="{Binding Path=Items}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Description}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding ElementName=grid, Path=DataContext.ItemsUnit}"></TextBlock>
</DataTemplate>
這種解決方案的最大的問題是,它使結合更脆弱(上下文敏感的)。如果網格的DataContext用於主/細節場景(使DataContext成爲BindingList而不是單個項目),則必須用DataContext={Binding /}
替換更新DataGrid DataContext。
從DataGrid.HeaderTemplate綁定比使用ElementName並引用DataContext更強健的方法嗎?
這是如何工作的?標題中的信息是從ViewModel(綁定到Grid DataContext)的屬性獲取的,來自靜態源的Noe(如標題信息提供者) – Marius 2010-09-28 19:22:04
您在哪裏創建Grid的DataContext? 我提到的替代方案(在CS文件中創建列定義,而不是XAML)可能對您更好。 – 2010-09-28 20:14:22
這裏是關於做動態列創建的兩個不錯的資源:http://elegantcode.com/2010/03/08/silverlight-datagrid-populate-dynamic-columns-from-a-child-collection/ AND http:// www .silverlightshow.net /項目/定義 - Silverlight的DataGrid的-列-AT-Runtime.aspx – 2010-09-28 20:26:56