我有以下代碼:上下文菜單不顯示綁定物品
XAML:
<Window x:Class="ContextMenuIssue.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBox MouseRightButtonUp="TextBox_OnMouseRightButtonUp">
<TextBox.ContextMenu>
<ContextMenu ItemsSource="{Binding Items}"></ContextMenu>
</TextBox.ContextMenu>
</TextBox>
</Grid>
</Window>
後面的代碼:
namespace ContextMenuIssue
{
class Model
{
public Model()
{
_items = new List<string> {"A", "B", "C"};
}
private List<string> _items;
public List<string> Items
{
get { return _items; }
set { _items = value; }
}
}
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new Model();
}
private void TextBox_OnMouseRightButtonUp(object sender, MouseButtonEventArgs e)
{
//TextBox textBox = ((TextBox) sender);
//textBox.ContextMenu.IsOpen = true;
//e.Handled = true;
}
}
}
當我運行它,並右鍵單擊文本框,我得到一個上下文菜單填充,如預期的3個項目(A,B和C)。但是,如果我試圖明確地打開上下文菜單,通過註釋TextBox_OnMouseRightButtonUp
中的代碼,我會得到一個空的上下文菜單。
當我試圖調試它時,似乎上下文菜單對象存在,但它是空的和未初始化的,例如它的ItemsSource屬性設置爲null。
任何人都有一個想法,爲什麼發生?
也許在右鍵單擊的默認處理中,WPF會將DataContext分配給上下文菜單。在我的代碼中,當手動打開conext菜單時,我這樣做:this.ContextMenu.DataContext = this.DataContext。菜單按預期工作。 – Jogy 2011-03-08 11:52:13