繁体   English   中英

具有StackPanel的DataGridColumnHeader,将TextBlock / Label的内容绑定到ColumnName,动态网格

[英]DataGridColumnHeader with StackPanel, bind content of TextBlock/Label to ColumnName, dynamic grid

我在ViewModel中有一个绑定到DataTable属性的动态生成的DataGrid。

我有AutoGenerateColumnHeaders = true,并且工作正常。 但是,我正在使用DataTemplate用包含Label和Button的StackPanel覆盖页眉。 我似乎无法弄清楚如何将标签内容绑定到DataGridColumnHeader。 我尝试了是否使用FindAncestor,但我相信以下内容与我需要的内容最接近。问题在Label Content =“ {}”上。

<local:UserControlViewBase.Resources>
    <Style TargetType="DataGridColumnHeader">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate>
                    <Border BorderBrush="Black" BorderThickness="1">
                        <StackPanel Width="Auto" Orientation="Horizontal">
                            <Label Content="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type local:UserControlViewBase}},Path=DataContext.TestList.ColumnName}" Padding="12,0,12,0" HorizontalAlignment="Center" VerticalAlignment="Center" />
                            <Button Content="Ok" Padding="12,0,12,0" HorizontalAlignment="Center" VerticalAlignment="Center" />
                        </StackPanel>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</local:UserControlViewBase.Resources>

//local:UserControlViewBase is just a UserControl with some extra bells and whistles added.

我对WPF还是很陌生,我假设我只是在绑定中缺少一些东西-我还在学习。 谢谢。

这就是我为使其正常工作所做的。 我不得不更改find​​ancestor来查找DataGridColumnHeader而不是用户控件。 然后,我可以访问Column.Header属性:

<local:UserControlViewBase.Resources>
    <Style TargetType="DataGridColumnHeader">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate>
                    <Border BorderBrush="Black" BorderThickness="1">
                        <StackPanel Width="Auto" Orientation="Horizontal">
                            <Label Width="75" Content="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGridColumnHeader}},Path=Column.Header}" Padding="12,0,12,0" HorizontalAlignment="Center" VerticalAlignment="Center" />
                            <Button Content="Ok" Padding="12,0,12,0" HorizontalAlignment="Center" VerticalAlignment="Center" />
                        </StackPanel>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</local:UserControlViewBase.Resources>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM