WPF: относительно привязки внутри DataGridTextColumns

Сегодня я заметил странное поведение, связывающее заголовок DataGridColumn с ViewModel.

Следующая привязка работает отлично (имя DataGrid - MyGrid):

<DataGridTextColumn Binding="{Binding Name}"  Width="*" CanUserReorder="False" CanUserResize="False" IsReadOnly="True">
                                <DataGridTextColumn.HeaderTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding ElementName=MyGrid, Path=DataContext.MyDeviceViewModel.CategoryHeader}"/>
                                    </DataTemplate>
                                </DataGridTextColumn.HeaderTemplate>
 </DataGridTextColumn>

Принимая во внимание, что следующее не работает (он жалуется, что MyGrid не может быть найден):

<DataGridTextColumn Binding="{Binding Name}"  Width="*" CanUserReorder="False" CanUserResize="False" IsReadOnly="True">
    <DataGridTextColumn.Header>
        <TextBlock Text="{Binding ElementName=MyGrid, Path=DataContext.MyDeviceViewModel.CategoryHeader}"/>
    </DataGridTextColumn.Header>
</DataGridTextColumn>

В чем разница между привязкой к модели представления в шаблоне или непосредственно в UIElement?

1 ответ

Это должно работать

<TextBlock Text="{Binding MyDeviceViewModel.CategoryHeader}"/>

Вам не нужно ссылаться на свойство ElementName, когда вы находитесь в том же элементе управления

НТН

Другие вопросы по тегам