[英]WPF ListboxItem and ContextMenu
我有這樣的代碼:
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical"
ContextMenuService.ShowOnDisabled="True">
<StackPanel.ContextMenu>
<ContextMenu>
<MenuItem Command="Delete" Click="DeleteEvent">
</MenuItem>
</ContextMenu>
</StackPanel.ContextMenu>
<TextBlock Text="{Binding EventName}">
</TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
不幸的是它不起作用。 我的上下文菜單被禁用(它正在顯示,但我無法點擊它,因為它被禁用)。 我已經讀過這個問題與選擇問題有關但我沒有找到任何解決方案。 你有什么想法?
首先,奇怪的是你正在嘗試設置Command和Click事件。 你應該設置一個或另一個。 操作被禁用的事實可能是因為您正在設置一個值為CanExecute = false的Command;
您可以嘗試為ListBoxItem設置ItemContainerStyle,而不是編寫DataTemplate,如下所示:
<ListBox>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem Header="Delete" Click="DeleteEvent"/>
</ContextMenu>
</Setter.Value>
</Setter>
<Setter Property="Content" Value="{Binding Path=EventName}"/>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
這里我直接設置了ListBoxItem實例的ContextMenu,因此它將在右側控件上顯示菜單。
ListBox已經有一個MenuContext。 你可以嘗試一下
<ListBox x:Name="MyistBox">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ContextMenu>
<ContextMenu>
<MenuItem Header="Update"/>
<MenuItem Header="Delete"/>
</ContextMenu>
</ListBox.ContextMenu>
</ListBox>
您只需將命令更改為標頭並處理DeleteEvent
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical"
ContextMenuService.ShowOnDisabled="True">
<StackPanel.ContextMenu>
<ContextMenu>
<MenuItem Header="Delete" Click="DeleteEvent">
</MenuItem>
</ContextMenu>
</StackPanel.ContextMenu>
<TextBlock Text="{Binding EventName}">
</TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.