2011-08-17 115 views
1

所以,这是一个扩展到以下问题:Style DataGridColumnHeader with Styles in WPFWPF中DataGridColumnHeader DataTemplate中绑定

总之,我试图用一个组合框模板化的列标题把我的DataGridColumnHeaders过滤器。所以与另一个例子的区别在于我使用了ComboBoxes。

<Window x:Class="WpfApplication1.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="300" Width="300" Loaded="Window_Loaded"> 
<Window.Resources> 
    <DataTemplate x:Key="MySpecialHeaderTemplate"> 
     <ComboBox ItemsSource="{Binding Codes}" /> 
    </DataTemplate> 
</Window.Resources> 
<Grid> 
    <DataGrid> 
     <DataGrid.Columns> 
      <DataGridTextColumn 
        Binding="{Binding Id}" /> 
      <DataGridTextColumn HeaderTemplate="{StaticResource MySpecialHeaderTemplate}" 
        Binding="{Binding Name}" /> 
      <DataGridTextColumn HeaderTemplate="{StaticResource MySpecialHeaderTemplate}" 
        Binding="{Binding Age}" /> 
     </DataGrid.Columns> 
    </DataGrid> 
</Grid> 

我的问题涉及到ComboBox绑定到某些值。如上所示,我目前遇到了将ItemsSource绑定到ViewModel中的属性的问题,但我无法使其工作。我的第二个问题是如何改变代码,以便我可以绑定到不同的值每列?

+0

什么是在输出窗口绑定错误?你在哪里设置DataContext? –

回答

1

DataGridColumnHeaders不会继承DataContext,因此它们没有任何要绑定的东西。使用RelativeSource寻父在DataGrid的结合,而不是和点DataContext.Codes

<DataTemplate x:Key="MySpecialHeaderTemplate"> 
    <ComboBox ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}, 
            Path=DataContext.Codes}" /> 
</DataTemplate> 
+0

谢谢!这解决了我的问题的第一部分。你可以帮助我的数据网格绑定到每列不同的集合?我现在正在玩它... – user832747

+0

谢谢。对于第二个问题,我想我必须定义每列的headertemplate而不是使用共享资源。 – user832747