其他分享
首页 > 其他分享> > 如何在XAML中从DataTemplate引用匹配的对象?

如何在XAML中从DataTemplate引用匹配的对象?

作者:互联网

我想在与DataTemplate关联的上下文菜单中使用CommandParameter属性. commandParameter应该包含对触发数据模板的对象的引用,如下面的代码示例所示.我尝试使用“ {Binding Path = this}”,但是它不起作用,因为“ this”不是属性.该命令将触发,但我无法获取正确的参数.是否有人对此有想法?

注意:我删除了Command =“ {Binding DeleteSelectedMeetingCommand}”,将其替换为对视图定位器的引用,并且该命令正在触发.

       <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>

标签:binding,mvvm-light,xaml,c
来源: https://codeday.me/bug/20191209/2097813.html