WPF DataGridTextColumHeaderTemplate绑定宽度的TextColumnWidth“*”
我有一个DataGrid
与width="*"
DataGridTextColum
(其中多,让他们都平分),我想设置这个DataGridTextColumn
的DataGridTextColumn.Header
的宽度到其父宽度(DataGridTextColumn
)。WPF DataGridTextColumHeaderTemplate绑定宽度的TextColumnWidth“*”
然而代码不能正常工作,原因是我没有定义RelativeSource
正确的,所以我的问题是,如何定义Binding
到Width
内的DataGridTextColumn
HeaderTemplate
绑定到DataGridTextColumn.ActualWidth
?代码如下!
<DataGridTextColumn Width="*" Binding="{Binding Username}" CanUserReorder="False" CanUserSort="False" x:Name="DataGridTextColumn">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Background="Red" MouseLeftButtonDown="EventSetter_OnHandler" Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType=DataGridTextColumn},Path=ActualWidth, UpdateSourceTrigger=PropertyChanged}">
<Label>Username</Label>
</StackPanel>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
如果我更改绑定源的ElementName,预期一切工作正常,但我想使用的RelativeSource降低命名,我必须做的量。
谢谢!
DataGridColumn
不是FrameworkElement
,所以它不会出现在VisualTree
。它仅仅是一个信息持有者实体。实际得到的是每Column
DataGridColumnHeader
。因此,您的HeaderTemplate
内容将出现在此DataGridColumnHeader
中。此DataGridColumnHeader
使用其Column
属性来维护其与DataGridColumn
的关联。所以,
将Width
的StackPanel
更改为Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=DataGridColumnHeader},Path=Column.ActualWidth, UpdateSourceTrigger=PropertyChanged}"
。