【问题标题】:ContextMenu in Window Resources, bind to DataGrid propertyWindow Resources 中的 ContextMenu,绑定到 DataGrid 属性
【发布时间】:2014-07-22 14:11:20
【问题描述】:

我想在多个DataGrid 上重复使用ContextMenu。 所以我将上下文菜单放在了我的WindowResources 中。

我无法绑定到放置了ContextMenuDataGridSelectedItem 属性。

在本例中,我试图在上下文菜单中显示SelectedItemName 属性。

<Window.Resources>
    <ContextMenu x:Key="DgContextMenu" 
        DataContext="{Binding Path=PlacementTarget.Tag, RelativeSource={RelativeSource Self}}">
        <MenuItem Header="{Binding SelectedItem.Name, RelativeSource={RelativeSource AncestorType=ContextMenu}}" />
    </ContextMenu>
</Window.Resources>

<DataGrid ItemsSource="{Binding CollectionView}" 
    ContextMenu="{StaticResource DgContextMenu}" 
    Tag="{Binding DataContext, RelativeSource={RelativeSource Self}}">
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="Name" Binding="{Binding Name}" />
    </DataGrid.Columns>
</DataGrid>

提前致谢

【问题讨论】:

    标签: c# wpf binding datagrid contextmenu


    【解决方案1】:

    您编写示例的方式存在绑定错误,这就是您的上下文菜单不起作用的原因。您已将菜单项标题绑定到没有 SelectedItem 属性的 ContextMenu 对象的 SelectedItem.Name (您可以从菜单项绑定的 RelativeSource 部分看出这一点)。其中一种可能的解决方案是通过 PlacementTarget(而不是 PlacementTarget.Tag)将 ContextMenu 的 DataContext 绑定到 DataGrid。由于子控件“继承”父数据上下文,您只需在菜单项绑定中指定路径。这就是它的外观:

    <Window.Resources>
        <ContextMenu x:Key="DgContextMenu" 
                 DataContext="{Binding Path=PlacementTarget, RelativeSource={RelativeSource Self}}">
            <MenuItem Header="{Binding Path=SelectedItem.Name}" />
        </ContextMenu>
    </Window.Resources>
    
    <DataGrid ItemsSource="{Binding CollectionView}" 
          ContextMenu="{StaticResource DgContextMenu}" 
          >
    </DataGrid>
    

    基本上,如果您在 VS 调试器中运行应用程序并在输出窗口(调试 -> 窗口 -> 输出)中观察输出,您可以找到这些错误。在输出窗口中,您应该查找 System.Windows.Data 错误行,在该行中,您将看到您尝试绑定的对象和属性的类型,这将为您提供在 XAML 中绑定有什么问题的线索。

    【讨论】:

      猜你喜欢
      • 2017-01-25
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 2014-12-29
      相关资源
      最近更新 更多