如何從HeaderTemplate模板中找到DataGridTextColumn?有沒有辦法只使用XAML來執行此操作?我已經嘗試過DataGridTextColumn類型的FindAncestor,但找不到它。從標題模板中查找DataGridColumn
我知道DataGridTextColumn不是可視化樹的一部分。有沒有解決方法?
如何從HeaderTemplate模板中找到DataGridTextColumn?有沒有辦法只使用XAML來執行此操作?我已經嘗試過DataGridTextColumn類型的FindAncestor,但找不到它。從標題模板中查找DataGridColumn
我知道DataGridTextColumn不是可視化樹的一部分。有沒有解決方法?
你真的需要整列對象嗎? DataContext將作爲頭部傳入的任何內容,例如
<DataGridTextColumn Header="Name" Binding="{Binding Name}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Foreground="Red" />
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
這將導致帶有文本「名稱」的紅色標題。
如果你確實需要的列中,您可以使用一個ElementName
結合:
<DataGrid ItemsSource="{Binding Data}">
<DataGrid.Columns>
<DataGridTextColumn x:Name="nameColumn" Header="Name" Binding="{Binding Name}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Foreground="Red">
<Run Text="{Binding Mode=OneWay}" />
<Run Text=" - " />
<Run Text="{Binding ActualWidth, ElementName=nameColumn, Mode=OneWay}" />
</TextBlock>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
這說明「名稱」,並在報頭中的列寬。
使用查找祖先工作,通過datagrid中的索引訪問列。
<DataGrid ItemsSource="{Binding Data}">
<DataGrid.Columns>
<DataGridTextColumn x:Name="nameColumn" Header="Name" Binding="{Binding Name}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Foreground="Red">
<Run Text="{Binding Mode=OneWay}" />
<Run Text=" - " />
<Run Text="{Binding Columns[0].ActualWidth, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Mode=OneWay}" />
</TextBlock>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
</DataGrid.Columns>
你能不能給我們你想要什麼與柱做的,在那裏你想從XAML訪問它的例子嗎? – Rachel