我有他的代码:
<ListBox ItemsSource="{Binding ItemsList}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ContextMenu >
<ContextMenu ItemsSource="{Binding MenuItemDataList}">
<DataTemplate DataType="{x:Type model:MenuItemData}" >
<MenuItem Header="{Binding Name}" />
</DataTemplate>
</ContextMenu>
</ListBox.ContextMenu>
</ListBox>
</Grid>
当我右键单击以显示弹出菜单时,它会抛出此异常消息:
Items collection must be empty before using ItemsSource.
ItemsList
和MenuItemDataList
是不同的集合。
答案 0 :(得分:0)
我认为您需要将datatemplate放在ContextMenu.ItemTemplate
中 <ListBox.ContextMenu >
<ContextMenu ItemsSource="{Binding MenuItemDataList}">
<ContextMenu.ItemTemplate>
<DataTemplate DataType="{x:Type model:MenuItemData}">
<MenuItem Header="{Binding Name}" />
</DataTemplate>
</ContextMenu.ItemTemplate>
</ContextMenu>
</ListBox.ContextMenu>