В моем файле XAML у меня есть DataGrid с контекстным меню. Источником данных является ViewModel, у которого есть свойство EntityCollection
(ObservableCollection) в качестве ItemsSource DataGrid и другая коллекция ContextMenu.MenuItems
, которая служит источником данных для создания контекстного меню в DataGrid. Элементы этой коллекции имеют свойство Command
, которое я привязываю к свойству Command пунктов меню:
<DataGrid Name="EntityDataGrid" ItemsSource="{Binding EntityCollection}" Height="450">
<DataGrid.ContextMenu>
<ContextMenu ItemsSource="{Binding Path=ContextMenu.MenuItems}">
<ContextMenu.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Command" Value="{Binding Command}" />
<Setter Property="CommandParameter"
Value="{Binding ElementName=EntityDataGrid, Path=SelectedItems}" />
</Style>
</ContextMenu.ItemContainerStyle>
</ContextMenu>
</DataGrid.ContextMenu>
</DataGrid>
Действие для команды пункта меню имеет следующую сигнатуру в ViewModel:
private void SelectedItemsAction(object parameter)
{
// Do something with "parameter"
}
Теперь моя проблема в том, что я достигаю SelectedItemsAction
, когда я нажимаю элемент контекстного меню, но параметр
равно нулю
. Я считаю, что моя проблема в установщике свойства CommandParameter
. Как видите, я хочу привязать это свойство к свойству SelectedItems
DataGrid, задав значение:
<Setter Property="CommandParameter"
Value="{Binding ElementName=EntityDataGrid, Path=SelectedItems}" />
Я пробовал более простые значения в качестве теста:
<Setter Property="CommandParameter"
Value="{Binding ElementName=EntityDataGrid, Path=Height}" />
Здесь параметр
по-прежнему нулевой
. А затем просто чтобы проверить, достигает ли какой-либо параметр моего метода действий:
<Setter Property="CommandParameter"
Value="10" />
Это работает, параметр
в моем методе действий теперь действительно равен 10
.
Что я делаю неправильно, чтобы привязать значение CommandParameter
к свойству EntityDataGrid
? Возможно ли это вообще?
Заранее спасибо за помощь!