我想在关联到 DataTemplate 的上下文菜单中使用 CommandParameter 属性。 commandParameter 应包含对触发数据模板的对象的引用,如下面的代码示例所示。我尝试使用“{Binding Path=this}”,但它不起作用,因为“this”不是一个属性。命令触发,但我无法获得正确的参数。有人知道如何执行此操作吗?
注意:我删除了 Command="{Binding DeleteSelectedMeetingCommand}",方法是将其替换为对 View 定位器的引用并触发命令。
<DataTemplate DataType="{x:Type Models:MeetingDbEntry}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Path=HostTeam}"/>
<TextBlock Grid.Column="1" Text="{Binding Path=GuestTeam}"/>
<TextBlock Grid.Column="2" Text="{Binding Path=Result}"/>
<Grid.ContextMenu>
<ContextMenu Name="MeetingMenu">
<MenuItem Header="Delete"
Command="{Binding
Source={StaticResource Locator},
Path=Main.DeleteSelectedMeetingCommand}"
CommandParameter="{Binding Path=this}"/>
</ContextMenu>
</Grid.ContextMenu>
</Grid>
</DataTemplate>
谢谢,
最佳答案
它正在使用下面的代码。您只需在 CommandParameter 属性中键入 {Binding} 即可引用触发 DataTemplate 的属性。
<DataTemplate DataType="{x:Type Models:MeetingDbEntry}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Path=HostTeam}"/>
<TextBlock Grid.Column="1" Text="{Binding Path=GuestTeam}"/>
<TextBlock Grid.Column="2" Text="{Binding Path=Result}"/>
<Grid.ContextMenu>
<ContextMenu Name="MeetingMenu">
<MenuItem Header="Delete"
Command="{Binding
Source={StaticResource Locator},
Path=Main.DeleteSelectedMeetingCommand}"
CommandParameter="{Binding}"
/>
</ContextMenu>
</Grid.ContextMenu>
</Grid>
</DataTemplate>
关于c# - 如何从 XAML 中的 DataTemplate 引用匹配对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3254537/