我一直在尋找同樣的事情。我查了Silverlight Control Toolkit在CodePlex上,並通過樣本(這是一個非常有用的資源)去了,這裏是我的發現是解決你問:
爲您的列表框創建一個ItemTemplate
在你想成爲「右點擊」您的ItemTemplate設置System.Windows.Controls.Input.Toolkit
命名空間中存在的附加屬性ContextMenuService.ContextMenu
部分
添加菜單項來控制你的文本菜單和點擊屬性設置爲相應的CL ICK事件處理
在事件處理程序,從發送方獲得的DataContext(你可以用它來尋找ListBox中相應的元素)
,使該元素選擇,只需設置在SelectedItem
財產列表框中將其
添加任何自定義邏輯事件處理程序
有沒有在樣本頁面爲例,只需進入「輸入 - >文本菜單」在t他的導航窗格。
如果你想要的東西簡潔,這裏有一個簡單的例子:
<ListBox ItemsSource="{StaticResource People}"
Name="myListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}">
<controlsInputToolkit:ContextMenuService.ContextMenu>
<controlsInputToolkit:ContextMenu>
<controlsInputToolkit:MenuItem Header="Show in MessageBox"
Click="show_Click" />
</controlsInputToolkit:ContextMenu>
</controlsInputToolkit:ContextMenuService.ContextMenu>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
有:
xmlns:controlsInputToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit"
的代碼:
private void show_Click(object sender, RoutedEventArgs e)
{
var person = ((MenuItem)sender).DataContext as Person;
if (null == person) return;
MessageBox.Show("My Name is: " + person.Name);
myListBox.SelectedItem = person;
}
我希望這有助於:)