c# - 如何从 XAML 中的 DataTemplate 引用匹配对象?

标签 c# xaml binding mvvm-light

我想在关联到 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/

相关文章:

WPF/Silverlight : How to DataTrigger a Storyboard Animation in MVVM?

c# - 使用 MVVM 代码绑定(bind)对 ListBox 进行排序

Xamarin.Forms Android 绑定(bind)库错误

c# - Asp.net 从后面的代码加载框架 src

c# - 服务需要生成非交互式子进程,但失败并显示 "Access denied"

c# - Windows Phone 应用程序中用户控件的绑定(bind)属性

c# - WPF Dockpanel 超出父级的宽度

c# - 在数据流网络中使用 BufferBlock<T> 的好处

c# - 在 C# 中搜索字符串的工具

c# - 具有复杂格式字符串的 MVVM 交叉绑定(bind)