Я не понимаю, почему привязка CommandParameter ElementName = null в Datagrid
Cat.Wpf
<Window x:Class="MyCat.Cat"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:MyCat"
xmlns:vm ="clr-namespace:MyCat.ViewModel"
mc:Ignorable="d" WindowStartupLocation="CenterScreen"
Title="MyCat •" Height="650" Width="800">
<Window.DataContext>
<vm:MyFriends/>
</Window.DataContext>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="25"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Menu>
<MenuItem Grid.Row="0" Grid.Column="0"
Header="Show Name" x:Name="mimi"
Command="{Binding GetNameCat}"
CommandParameter="{Binding ElementName=mimi}"/>
</Menu>
<DataGrid CanUserAddRows="False" CanUserDeleteRows="False"
Grid.Row="1" Grid.Column="0"
SelectionUnit="FullRow">
<DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="List cats" x:Name="cats"
Command="{Binding GetCats}"
CommandParameter="{Binding ElementName=cats}"/>
</ContextMenu>
</DataGrid.ContextMenu>
</DataGrid>
CommandParameter="{Binding ElementName=mimi}"
работает, но CommandParameter="{Binding ElementName=cats}
не работает. Это всегда возвращает ноль. Я нахожу решение
CommandParameter="{Binding RelativeSource={RelativeSource Self}}"
.
Какое-то тело, пожалуйста, скажите мне, почему?