如何使用数据绑定项目控件自定义DataGrid的标头

时间:2016-08-02 09:13:26

标签: c# wpf xaml

我尝试创建包含datagrid的{​​{1}}的自定义标头,该标头绑定到itemscontrol

(基本上,我想创建12列,每月一列 - >参见图片。)

enter image description here

为什么这段代码不起作用?

代码

ObservableCollection<DateTime>

更新我将问题缩小到Binding。以下代码适用于finde

<DataGrid x:Name="dgProjects"  AutoGenerateColumns="False" ItemsSource="{Binding Projects}" AlternationCount="2" AlternatingRowBackground="LightGray">
        <DataGrid.Columns>
...
<DataGridTemplateColumn Width="*">
    <DataGridTemplateColumn.HeaderTemplate>
        <DataTemplate>
            <ItemsControl Grid.Row="1" ItemsSource="{Binding Path=Monate}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=ActualWidth}">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <Canvas />
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Date}" Background="LightGreen" Margin="1"/>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </DataTemplate>
    </DataGridTemplateColumn.HeaderTemplate>

更新 Viewmodel

<DataGridTemplateColumn.HeaderTemplate>
    <DataTemplate>
        <Grid>
            <ItemsControl ItemsSource="{Binding Projects}">                             
                <TextBlock Text="asdf" Background="LightGreen" Margin="1"/>
                <TextBlock Text="asdf" Background="LightGreen" Margin="1"/>
                <TextBlock Text="asdf" Background="LightGreen" Margin="1"/>
            </ItemsControl>
        </Grid>
    </DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>

1 个答案:

答案 0 :(得分:2)

由于您对日期的绑定没有看到数据上下文,因此存在问题。

这应该通过按名称引用数据网格来解决问题。

<DataTemplate>
       <ItemsControl ItemsSource="{Binding DataContext.Monate, ElementName=dgProjects}"