Привязка команды к MenuItem в CompositeCollection

240
06 марта 2017, 09:25

Использую контекстное меню для изменения строк DataGrid. Каждый пункт меню представляет собой цвет, который применяется к строкам таблицы. В коллекции Colors сами цвета. Пользователь может удалять или добавлять свои.

Вынес прозрачный цвет из коллекции, чтобы пользователь не мог его удалить и этот пункт был доступен всегда.

Проблема с привязкой пункта меню "Без цвета". Команда привязывается, а вот параметр команды, который содержит строки таблицы, которые нужно перекрасить, не привязывается. Хотя в ItemContainerStyle параметр команды привязывается тем же способом и все остальное работает как надо. Но вот с пунктом "Без цвета" такой способ, почему-то, не работает.

В чем проблема?

<DataGrid.ContextMenu>
    <MenuItem Header="Цвет">
        <MenuItem.ItemsSource>
            <CompositeCollection>
                <MenuItem Header="Без цвета" 
                          Command="{Binding ResultsVM.ResetColorCommand}"
                          CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContextMenu}}, Path=PlacementTarget.SelectedItems}"/>
                <Separator />
                <CollectionContainer Collection="{Binding Source={StaticResource Colors}}" />
                <Separator />
                <MenuItem Header="Редактировать метки" Click="miColorEdit_Click" />
            </CompositeCollection>
        </MenuItem.ItemsSource>
        <MenuItem.ItemContainerStyle>
            <Style TargetType="{x:Type MenuItem}">
                <Setter Property="Command" Value="{Binding ChangeColorCommand}" />
                <Setter Property="CommandParameter" Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContextMenu}}, Path=PlacementTarget.SelectedItems}" />
            </Style>
        </MenuItem.ItemContainerStyle>
    </MenuItem> 
</DataGrid.ContextMenu>
READ ALSO
Доступ к обьектам коллекции

Доступ к обьектам коллекции

Как сравнить элементы коллекции каждый с каждым? Немного обьясню, у меня есть метод, который работает с двумя обьектами, вызываю его так objectnamemethod(objectname1)в...

361
Эмуляция нажатия клавиши unity

Эмуляция нажатия клавиши unity

Как в Unity сделать эмуляцию нажатия клавиши на клавиатуре? Чтобы на него реагировали и внешние программыМышкой мы можем, например, подвигать...

330
Проблема с прокси в библиотеке VK Net

Проблема с прокси в библиотеке VK Net

Работаю с библиотекой http://vknetgithub

586
Необходимый минимум знаний у C# junior

Необходимый минимум знаний у C# junior

На данный момент неспешно изучаю С# и немного С++Мне интересен необходимый багаж знании у С# разработчика

261