2011-08-01 5 views
0

У меня есть GridView, который имеет несколько столбцов, которые все присоединенные к структуре данных в моем ViewModel слое, так что я хочу сделать, это вWPF Контекстное меню для каждой строки в GridView

  1. Имеют Контекстное меню, которое будет отображаться, когда пользователь нажимает на одну из строк данных в GridView (до сих пор я мог только создать контекстное меню, когда я нажимаю на заголовок столбца, на который я его надел.
  2. Содержимое контекстного меню зависит от содержимого текущей строки, на которую нажал пользователь.

Любые предложения? спасибо

ответ

0

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


Edit: Структура должна иметь следующий вид, если вы решили поменять всю ContextMenu на состояние:

<Style TargetType="{x:Type ListViewItem}"> 
    <Style.Resources> 
      <ContextMenu x:Key="DefaultMenu"> 
       <!-- Rest of menu here --> 
      </ContextMenu> 
      <ContextMenu x:Key="NonDefaultMenu"> 
       <!-- Rest of menu here --> 
      </ContextMenu> 
    </Style.Resources> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding SomeProperty}" Value="SomeValue"> 
      <Setter Property="ContextMenu" Value="{StaticResource NonDefaultMenu}"/> 
     </DataTrigger> 
    </Style.Triggers> 
    <Setter Property="ContextMenu" Value="{StaticResource DefaultMenu}"/> 
</Style> 

Вы обычно могли бы также определить ContextMenu на месте, как хорошо, но если вы добавите обработчики событий, он станет ошибкой, синтаксис будет выглядеть следующим образом:

<Setter Property="ContextMenu"> 
     <Setter.Value> 
      <ContextMenu> 
       <!-- Rest of menu here --> 
      </ContextMenu> 
     </Setter.Value> 
</Setter> 
+0

Я пытаюсь добавить DataTrigger в стиле .Триггерс и внутри DataTrigger У меня есть контекстное меню, но я все еще получаю сообщение об ошибке «Значение типа« Контекстное меню »не может быть добавлено в коллекцию или словарь типа SetterBaseCollection, извините, что мое первое программирование в WPF, поэтому я понятия не имею, что это значит, я что-то пропустил? –

+0

Добавлен некоторый пример кода (который, надеюсь, не ошибается, так как я написал его прямо здесь) ... –

+0

@HB, эта ошибка «Значение типа« Контекстное меню »не может быть добавлено в коллекцию или словарь типа« SetterBaseCollection » '"исчезнет, ​​если мы создадим StaticResource контекстного меню и установим его как значение .... <Свойство Setter =" ContextMenu "Value =" {StaticResource ContextMenuForThisCondition} "> –

Смежные вопросы