【发布时间】:2014-11-26 17:55:48
【问题描述】:
我有一个动态生成的 DataGrid 绑定到我的 ViewModel 中的 DataTable 属性。
我有 AutoGenerateColumnHeaders = true,它工作正常。但是,我使用 DataTemplate 用包含标签和按钮的 StackPanel 覆盖标题。我似乎无法弄清楚如何将标签内容绑定到 DataGridColumnHeader。我尝试过使用和不使用 FindAncestor,但我相信以下是最接近我需要的位置...问题在标签内容 =“{}”
<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 相当陌生,我假设我只是缺少绑定的东西 - 我还在学习。 谢谢。
【问题讨论】:
-
如果你想让标签只显示标题的内容,只需使用
<Label Content="{Binding}",还是需要从列表中获取某个值? -
这给了我一个 System.StackOverflow 异常。
-
抱歉,没有什么可测试的,但
DataGridColumnHeader是一个内容控件,并且由于模板内的任何内容都使用DataGridColumnHeadersdataContext 你应该能够绑定到它,也许试试@ 987654325@