根据listview项目禁用/启用上下文菜单项

4
我有一个包含ListView的UserControl。 此外,我还有一个listViewItems.cs类,其中的DisplayMemberBinding绑定到listView中的GridView。 每个ListView-Item都有一个上下文菜单。 现在,我正在尝试启用/禁用上下文菜单项,具体取决于类ListViewItems中的值是否为空。 我已经尝试将IsEnabled属性绑定到ListViewItems.cs类中的布尔值ShowResItemEn,但它不起作用。 DataOutput.xaml
<ListView.Resources>
    <ContextMenu x:Name="cmListView" x:Key="ItemContextMenu" DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}"> 
        <MenuItem x:Name="itmRes"
                    Header="Reservierungen anzeigen"
                    IsEnabled="{Binding PlacementTarget.SelectedItem.ShowResItemEn, RelativeSource={RelativeSource FindAncestor,AncestorType=ContextMenu}}"
                    Command="{Binding ShowResItemCmd}"
                    CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem}" >
        </MenuItem>
    </ContextMenu>
</ListView.Resources>

类 ListViewItems.cs

public Boolean ShowResItemEn
{
   get
   {
       return (auftrNr[0] == null) ? false : true; 
   }
}

你的上下文菜单是在项(items)中还是在列表视图(listview)中? - sexta13
我编辑了我的问题,它被定义为ListView资源。 - user3597422
您同时包含了过多和不足够的代码。请提供一个良好、最小化、完整的代码示例,清楚地说明您的问题。精确详细地解释这段代码现在的作用以及与您想要的不同之处。同时请参考StackOverflow上的帮助页面 - Peter Duniho
与论坛网站不同,我们在[so]上不使用“谢谢”、“感激任何帮助”或签名。请参见“应该从文章中删除'Hi'、'thanks'、标语和问候语吗?”。顺便说一句,“Thanks in advance”是“提前致谢”,而不是“提前感谢”。 - John Saunders
好的,我现在编辑了我的问题。希望这有所帮助。 - user3597422
1个回答

1

好的,现在它可以工作了。我设置了AncestorType的错误。

IsEnabled="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}},Path=SelectedItem.ShowBesItemEn}"       

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接