DataGridTemplateColumn标头绑定

时间:2014-06-10 06:37:42

标签: c# wpf mvvm wpfdatagrid

我有一个动态创建的DataGrid,其中包含以下XAML:

 <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Cells}" IsReadOnly="True" Visibility="{Binding VisibilityStatus}"       
                                  CanUserResizeColumns="False" CanUserAddRows="False" RowBackground="{Binding Color}" Margin="0" RowHeight="25" HeadersVisibility="All">
                                <DataGrid.Columns>
                                    <DataGridTemplateColumn Header="{Binding Path=Header}"> 
                                        <DataGridTemplateColumn.CellTemplate>
                                            <DataTemplate>
                                                <ComboBox ItemsSource="{Binding UniqueValuesToLapMapping.Keys, UpdateSourceTrigger=PropertyChanged}" 
                                                          SelectedItem="{Binding SelectedValue, Mode=TwoWay}"
                                                          SelectedIndex="0" Width="55"
                                                          Background="{Binding Color}"/>
                                            </DataTemplate>
                                        </DataGridTemplateColumn.CellTemplate>
                                    </DataGridTemplateColumn>
                                </DataGrid.Columns>
                            </DataGrid>

除了标题之外,表格的所有内容都正确显示。无论我在哪个类中放置Header属性,我似乎无法绑定它。我已经尝试将它放入ViewModel中,将其放入具有&#34; Cells&#34;属性,并将其放入具有我在ComboBox中绑定的所有属性的类中。 我也试过没有&#34; Path =&#34;并将UpdateSourceTrigger设置为OnPropertyChanged并更改运行时的属性值:似乎没有任何效果。我在这里缺少什么?

这是我绑定的属性,我已将其放入所有这些类中:

    private string _header = "TEST";
    public string Header
    {
        get { return _header; }
        set { SetField(ref _header, value, "Header"); }
    }

1 个答案:

答案 0 :(得分:5)

事实证明,它不在任何逻辑或可视树中。这个解决方案对我有用:

http://www.thomaslevesque.com/2011/03/21/wpf-how-to-bind-to-data-when-the-datacontext-is-not-inherited/