<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 개의 사용자 정의 컨트롤과 주 메뉴가있어이 컨트롤을 선택합니다.WPF MVVM 동적 컨텍스트 메뉴
선택 UC1
사용 CM -
선택 UC2
선택 UC1
사용 CM OK - OK
그러나
선택 UC1
사용 CM - OK
선택 UC1
사용 CM - CM 항목 업데이트 안 함
I UC1의 새로운 뷰 모델을 만들 때 UC1의 뷰를 업데이트해야한다고 생각하지만 어떻게해야합니까? ContextMenu 구현을 다시 작성해야합니까?
그냥 작은 정보 같아야합니다 : 당신은 UIElement에의 종류에 ObservableCollections를 작성해서는 안됩니다. 비즈니스 논리를 유지하는 여기의 객체를 사용해야합니다. – Tomtom
@Tomtom 예를 들어 "자신의 수업"을 의미합니까? – Risa
네, 정확하게 그게 무슨 뜻이야 – Tomtom