2013-08-16 3 views
3

Я пытаюсь создать контекстное меню, отображающее список строк. Приложение содержит набор данных для людей, которые могут быть отредактированы, удалены и добавлены в группу. У меня есть класс StudentGroup, которые представляют собой разные группы, к которым может быть добавлен человек (один из членов группы StudentGroup - это имя). ViewModel извлекает полный список групп и помещает их в коллекцию Observable. Я пытаюсь настроить контекстное меню таким образом, чтобы всякий раз, когда пользователь щелкает правой кнопкой мыши и наводит курсор на «Добавить пользователя» в ->, он открывает боковые элементы меню, содержащие строку имени наблюдаемых коллекций.Связывание наблюдаемой коллекции с контекстным меню

Это то, что я пробовал до сих пор, просматривая похожие вопросы в StackOverflow, но пока он не работал.

Часть XAML:

<DataGrid.ContextMenu> 
    <ContextMenu AllowDrop="True" ItemsSource="{Binding Entries}"> 
     <MenuItem Header="Edit" /> 
     <MenuItem Header="Delete"/> 
     <MenuItem Header="Add User to"> 
      <MenuItem.ItemTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding Name}" /> 
       </DataTemplate> 
      </MenuItem.ItemTemplate> 
     </MenuItem> 
     </ContextMenu> 
</DataGrid.ContextMenu> 

XAML код позади Вид:

private TitleViewMode TVM=new TitleViewMode; 
public Welcome() 
    { 
     InitializeComponent(); 
     _grid1.ContextMenu.DataContext = TVM; 
    } 

ViewModel

class TitleViewModel 
{ 
    public ObservableCollection<StudentGroup> Entries {get;set;} 
    private List<StudentGroup> sg1 { get; set;} 
    public TitletViewModel() 
    { 
     sg1 = GetGroups(); 
     Entries = new ObservableCollection<StudentGroup>(sg1); 
    } 

} 

ответ

1

Это должно работать

<MenuItem Header="Add User to" ItemsSource="{Binding Entries}"> 
    <MenuItem.ItemTemplate> 
     <DataTemplate> 
      <MenuItem Header="{Binding Name}"></MenuItem> 
     </DataTemplate> 
    </MenuItem.ItemTemplate> 
</MenuItem> 
Смежные вопросы