Привязка параметра команды контекстного меню к свойству datagrid

В моем файле 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 ? Возможно ли это вообще?

Заранее спасибо за помощь!

13
задан Slauma 25 January 2011 в 23:00
поделиться