[英]WPF MVVM Dynamic ContextMenu
<Custom:DataGrid.ContextMenu>
<ContextMenu ItemsSource="{Binding MenuItemsList, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
</Custom:DataGrid.ContextMenu>
public ObservableCollection<MenuItem> MenuItemsList
{
get
{
ObservableCollection<MenuItemClass> list = new ObservableCollection<MenuItemClass>();
if (SelectedInspection != null)
{
switch (SelectedInspection.state.s_serverid)
{
case 1:
case 2:
list.Add(medit);
break;
case 3:
list.Add(msync);
list.Add(mview);
list.Add(mnewdoc);
break;
case 4:
list.Add(mview);
list.Add(mdelete);
break;
}
}
return list;
}
set
{
OnPropertyChanged("MenuItemsList");
}
}
ContextMenu(CM)位於UserControl 1(UC1)中。 窗口具有2個用戶控件和用於選擇此控件的主菜單。
選擇UC1
使用CM-確定
選擇UC2
選擇UC1
使用CM-確定
但
選擇UC1
使用CM-確定
選擇UC1
使用CM-不更新CM項目
我想在創建新的UC1視圖模型時應該更新UC1的視圖,但是如何? 還是我應該重寫ContextMenu實現?
好的。
首先:
吸氣劑中的代碼應移至模型中。
現在到您的問題:
你的二傳手看起來應該像
set
{
this.MenuItemsList = value;
OnPropertyChanged("MenuItemsList");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.