Я пытаюсь составить список с контекстным меню, используя шаблон данных. Пока у меня есть следующий код:
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text = "{Binding}"/>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.Items>
<sys:String>Item 1</sys:String>
<sys:String>Item 2</sys:String>
</ListBox.Items>
</Listbox>
Я хочу добавить следующее контекстное меню:
<ContextMenu>
<MenuItem Header = "Edit" />
<MenuItem Header = "Delete" />
</ContextMenu>
Я пробовал использовать ListBox.ItemContainerStyle и Setter, но я использую Материальный дизайн, и когда я использую установщик стилей, он удаляет эти стили материального дизайна.
Решение:
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation = "Horizontal" Background = "Transparent">
<TextBlock Text = "{Binding}"/>
</StackPanel>
<StackPanel.ContextMenu>
<ContextMenu>
<MenuItem Header = "Edit" />
<MenuItem Header = "Delete" />
</ContextMenu>
</StackPanel.ContextMenu>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.Items>
<sys:String>Item 1</sys:String>
<sys:String>Item 2</sys:String>
</ListBox.Items>
</Listbox>
Или используйте свойство На основе с ListBox.ItemContainerStyle.
Вы можете установить свойство
BasedOn
в своем стиле, чтобы наследовать стиль материала (если у вас есть ключ для этого).