WPF 上下文菜单

标签 wpf mvvm contextmenu

我在 wpf 应用程序中使用 mvvm。我在 ListView 中有一个上下文菜单,当我右键单击一个 ListView 项时,我想要一个上下文菜单来显示联系人列表。

下面只是给我一个没有内容的上下文菜单。谁能告诉我我做错了什么?

<ListView Grid.Row="3"
            ItemsSource="{Binding Path=Phones}"
            SelectedItem="{Binding Phones.SelectedItem}"
            Height="100">
    <ListView.ItemContainerStyle>
        <Style TargetType="{x:Type ListViewItem}">
            <Setter Property="ContextMenu" Value="{StaticResource ContactMenu}"/>
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Phone" DisplayMemberBinding="{Binding Path=PhoneNumber, StringFormat=(000) 000-0000}"/>
            <GridViewColumn Header="Type" DisplayMemberBinding="{Binding Path=PhoneType.Type}"/>
            <GridViewColumn Header="Contacts" DisplayMemberBinding="{Binding Path=Contacts.Count}"/>
            <GridViewColumn Header="Notes" DisplayMemberBinding="{Binding Path= Notes.Count}"/>
            <GridViewColumn Header="Priority" DisplayMemberBinding="{Binding Path=Priority}"/>
        </GridView>
    </ListView.View>
</ListView>


<UserControl.Resources>
    <Style TargetType="{x:Type ListViewItem}">
        <Setter Property="Background" Value="{Binding SourceType, Converter={StaticResource SourceGroupConverter}}"/>
    </Style>
    <ContextMenu x:Key="ContactMenu" ItemsSource="{Binding Contacts}" >
        <ContextMenu.ItemTemplate>
            <DataTemplate>
                <MenuItem Header="{Binding Path=FirstName}"/>
            </DataTemplate>
    </ContextMenu>
</UserControl.Resources>

更新:

我想通了,我有一个专门的集合导致绑定(bind)路径不正确。

谢谢。

最佳答案

上下文菜单不存在于页面的可视化树中,因此它不会继承数据上下文。尝试直接在 ContextMenu 上设置 DataContext。

关于WPF 上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/894727/

相关文章:

c# - 从主 Viewmodel 调用 subview 模型方法

c# - 使用 WPF MVVM 预呈现/隐藏负载?

c# - 通过数据库使用 ViewModel 填充 DataGrid

swift - 在 Finder 上下文中建立服务

contextmenu - 传单 geojson 上下文菜单

c# - 如何在 C#(VS 2008) 中以编程方式添加上下文菜单?

WPF 入队和重放关键事件

c# - WPF 中绑定(bind)的 Markup.IStyle.Connector.Connect 错误

wpf - 无边距打印

c# - 限制在 WPF 中扩展 TreeNode 时 TreeView 的深度