我收到错误消息:
System.Windows.Data 错误:4:找不到与引用“ElementName = gridProductViewDataGrid”绑定的源。绑定表达式:路径=选定项;数据项=空;目标元素是'MenuItem'(名称='');目标属性是“IsEnabled”(类型“布尔”)
在 Visual Studio 的输出窗口中,我的代码没有做它应该做的事情。
添加工作正常,因为它永远不需要被禁用,但删除没有被禁用。
<DataGrid AutoGenerateColumns="False" IsReadOnly="False" CanUserAddRows="False" CanUserDeleteRows="False" EnableRowVirtualization="True" ItemsSource="{Binding Items, Mode=TwoWay}" x:Name="gridViewProductDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" >
<DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="{Binding LabelStrings.AddProductLabel, Source={StaticResource ResourceWrapper}}" Click="Add_Product_MenuItem_Click"/>
<MenuItem Header="{Binding LabelStrings.RemoveProductLabel, Source={StaticResource ResourceWrapper}}" Click="Remove_Product_MenuItem_Click" IsEnabled="{Binding ElementName=gridViewProductDataGrid, Path=SelectedItem, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource ObjectToBooleanConverter}}"/>
</MenuItem>
</ContextMenu>
</DataGrid.ContextMenu>
如果没有对象,则转换器只需返回 true,如果存在则返回 false。我已经尝试将此代码移入和移出网格以及以不同的顺序移动绑定的部分。当我运行代码并放入断点时,它从未进入布尔转换器的代码。为什么它在里面时看不到网格?