Элементы подменю XAML и Binding в ContextMenu? - PullRequest
1 голос
/ 04 июля 2011

У меня есть ContextMenu, определенное в таблице данных, но я хочу привязать элементы подменю к коллекции в моей модели представления.Кто-нибудь может подсказать, как это сделать?

Ниже приведен простой пример того, чего я пытаюсь достичь, НО я хочу, чтобы «Test1», «Test2» происходили из коллекции на моей модели представления, а не были жестко закодированы.Я знаю, как связать мою коллекцию со всем ContextMenu, но не знаю, как связать ее только с одним подменю ...

<ContextMenu>
    <MenuItem Header="Add to">
        <MenuItem Header="Test1" />
        <MenuItem Header="Test2" />
    </MenuItem>
    <MenuItem Header="Remove from All" />
</ContextMenu>

Я использую 3.5 SP1 и WPF Toolkit.

Ответы [ 2 ]

6 голосов
/ 04 июля 2011

Думаю, мне следовало больше экспериментировать. Оказывается, это было относительно просто:

<my:DataGrid.ContextMenu>
    <ContextMenu>
        <MenuItem Header="Add to" ItemsSource="{Binding MyItems}">
            <MenuItem.ItemTemplate>
                <DataTemplate>
                    <MenuItem CommandTarget="{Binding}" Click="AddClick">
                        <MenuItem.Header>
                            <TextBlock>
                            <TextBlock.Text><Binding StringFormat="Add to {0}" /></TextBlock.Text>
                            </TextBlock>
                        </MenuItem.Header>
                    </MenuItem>
                </DataTemplate>
            </MenuItem.ItemTemplate>
        </MenuItem>
        <MenuItem Header="Remove from All" />
    </ContextMenu>
</my:DataGrid.ContextMenu>
3 голосов
/ 27 июня 2013

Существует ошибка при использовании MenuItem.ItemTemplate. Цвет при наведении указателя мыши на подменю заставляет пользователя неправильно понимать, что он может щелкнуть, чтобы выбрать меню, но он не работает для всей области, даже если он выделен. Смотри картинку

enter image description here

Затем я использовал этот код, и он отлично работал для меня.

<ContextMenu>
    <MenuItem Header="Add to" ItemsSource="{Binding MyItems}" 
              DisplayMemberPath="{Binding ItemName}">
       <MenuItem.ItemContainerStyle>
           <Style>
              <EventSetter Event="MenuItem.Click" Handler="Menu_Click"/>
           </Style>
        </MenuItem.ItemContainerStyle>
    </MenuItem>
    <MenuItem Header="Remove from All" />
</ContextMenu>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...