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>
これにより、テキスト「名前」の赤いヘッダーが表示されます。
<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>
は、これは「名前」とヘッダの列幅を示しています。あなたが実際に列が必要な場合は
あなたはElementName
バインディングを使用することができます。
find ancestorを使用してデータグリッドのインデックスで列にアクセスします。
<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