У меня есть GirdControl
на моем WPF, который связан с объектами типа NoteFrontEnd
. В NoteFrontEnd
есть свойство с именем NoteType
, которое я хочу использовать в качестве источника привязки видимости в MenuItem
.
Пользователь должен щелкнуть правой кнопкой мыши один из NoteFrontEnd
объектов из GridControl
, и на основе его свойства NoteType
либо показать, либо скрыть MenuItem
с помощью Header="Process Item"
. * 1013. *
GridControl
и MenuItem
определены в xaml как:
<dxg:GridControl Name="GridCtrl"
ItemsSource="{Binding Path=BaseDashboardDataSource}"
SelectedItems="{Binding SelectedItems, Mode=TwoWay}"
AutoGenerateColumns="None">
<dxg:GridControl.Columns>
...
<dxg:GridColumn x:Name="NoteType" FieldName="NoteType" Header="Type" />
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView.ContextMenu>
<ContextMenu>
<ContextMenu.ItemsSource>
<CompositeCollection>
...
<!--Menu Item to toggle visibility of-->
<MenuItem Header="Process Item"
Visibility="{Binding ElementName=GridCtrl, Path=SelectedItem, Converter={StaticResource GVItemToVis}}"
Command="{...}">
</MenuItem>
</CompositeCollection>
</ContextMenu.ItemsSource>
</ContextMenu>
</dxg:TableView.ContextMenu>
</dxg:TableView>
</dxg:GridControl.View>
</dxg:GridControl>
Моя ViewModel определена так:
public class NoteViewModel : DashboardViewModelBase
{
...
public ObservableCollection<NoteFrontEnd> BaseDashboardDataSource { get; private set; }
public ObservableCollection<BrokerNoteFrontEnd> SelectedItems
{
get { return _selectedItems; }
set
{
if (_selectedItems == value) return;
_selectedItems = value;
OnPropertyChanged();
}
}
public NoteViewModel(...) {
...
BaseDashboardDataSource = new ObservableCollection<NoteFrontEnd>();
}
}
И NoteFrontEnd
как:
public class NoteFrontEnd
{
public string NoteType { get; set; }
}
Я получаю приведенную ниже ошибку, хотя:
Cannot find source for binding with reference 'ElementName=GridCtrl'. BindingExpression:Path=SelectedItems;...
Я пробовал другие привязки, как показано ниже, но получил ту же ошибку:
Visibility="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Grid}, Path=PlacementTarget.SelectedItem, Converter={StaticResource GVItemToVis}}"
Как можно Я получаю эту привязку на работу?