我想在右键单击 EmpName 列上的“插入”菜单时添加新行,但它不会触发 InsertCommand。我在这里附上了 xaml 代码。请告诉我我在这里缺少什么。
<Window x:Class="DataGridRowsManagement.MainWindow"
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:data="clr-namespace:DataGridRowsManagement"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<data:ViewModel x:Key="EmpVM"></data:ViewModel>
</Window.Resources>
<Grid DataContext="{Binding Source={StaticResource EmpVM}}">
<DataGrid AutoGenerateColumns="False" Height="287"
HorizontalAlignment="Left" Margin="23,12,0,0"
Name="dgEmp" VerticalAlignment="Top" Width="657"
ItemsSource="{Binding Path=Employees}" ColumnWidth="*"
SelectedIndex="{Binding Path=RecordIndex,Mode=TwoWay}">
<DataGrid.Columns>
<DataGridTextColumn Header="EmpNo" Binding="{Binding EmpNo}" />
<DataGridTemplateColumn Header="EmpName">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding EmpName}" HorizontalAlignment="Stretch">
<TextBlock.ContextMenu>
<ContextMenu DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}">
<MenuItem Command="{Binding InsertCommand}" CommandParameter="{Binding RecordIndex}" Header="Insert"/>
<MenuItem Command="{Binding DeleteCommand}" CommandParameter="{Binding RecordIndex}" Header="Delete"/>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Salary" Binding="{Binding Salary}" />
<DataGridTextColumn Header="Designation" Binding="{Binding Designation}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
这些绑定位于
DataTemplate
内,因此它们将尝试绑定到要模板化的项目。
尝试下一个:
<Window
...
x:Name="ThisWindow"
<MenuItem Command="{Binding DataContext.InsertCommand, ElementName=ThisWindow}" />