DataGridのDataGridTextColumnに対して次のxamlコードを定義しています。
<DataGridTextColumn x:Name="UserIdColumn" Binding="{Binding Path=UserId}" HeaderStyle="{StaticResource DataGridHeaderStyle}"/>
そしてこれがDataGridTextColumnのHeaderStyleです
<Style x:Key="DataGridHeaderStyle" TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridColumnHeader">
<StackPanel>
<TextBlock x:Name="ColumnName" Text="UserId" />
<TextBox x:Name="UserIdFilter" Width="100">
<i:Interaction.Triggers>
<i:EventTrigger EventName="TextChanged">
<cal:ActionMessage MethodName="UserIdFilterChanged">
<cal:Parameter Value="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGridTextColumn}}, Path=Name}"/>
<cal:Parameter Value="{Binding ElementName=UserIdFilter, Path=Text}" />
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
ご覧のとおり、このコード行を使用して、DataGridColumnHeaderのControlTemplate内のDataGridTextColumnのNameプロパティにアクセスしようとしています。
<cal:Parameter Value="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGridTextColumn}}, Path=Name}"/>
上記の行はnullを返しています、なぜですか?
DataGridColumnHeaderのコントロールテンプレートからDataGridTextColumnのNameプロパティを取得する他の方法はありますか?