2015-05-05 78 views
1

我在項目中使用MVVM燈,並且我在NoteListPage中有一個ListView。在ListView中,我定義了2個MenuFlyoutItem,我想將每個都綁定在我的視圖模型中創建的命令。XAML MenuFlyoutItem命令在ListView中綁定

這裏是我的NoteListPage.xaml一些細節:

DataContext="{Binding NoteListPage, Source={StaticResource Locator}}"> 

在我的視圖模型,我有:

public ObservableCollection<Note> NoteList 
    { 
     get { return _noteList; } 

     set { Set(() => NoteList, ref _noteList, value); } 
    } 

    public ICommand DeleteComamand { get; private set; } 
    public ICommand EditCommand { get; private set; } 

我綁定的ItemSource到NoteList,

<ListView x:Name="NoteListView" ItemsSource="{Binding NoteList}"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Border 
        BorderBrush="White" 
        BorderThickness="2" 
        CornerRadius="5" 
        Width="360" 
        Margin="10,5" 
        Tapped="Border_Tapped"> 

        <FlyoutBase.AttachedFlyout> 
         <MenuFlyout> 
          <MenuFlyoutItem Text="Delete" 
         /> 

          <MenuFlyoutItem Text="Edit" 
         /> 
         </MenuFlyout> 
        </FlyoutBase.AttachedFlyout> 

        <StackPanel > 
         <TextBlock 
           FontSize="30" Text="{Binding NoteTitle}"/> 
         <TextBlock 
           FontSize="25" 
           TextWrapping="Wrap" Text="{Binding NoteContent}"/> 
        </StackPanel> 

       </Border> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

但之後我無法綁定MenuFlyoutItem命令,因爲數據上下文的類型是Model.Note

enter image description here

我如何可以綁定DeleteComamand和EditCommand到MenuFlyoutItem,但ListView控件的ItemSource仍難免NoteList在這種情況下?否則,列表視圖頁面不會顯示任何項目標題/內容。

回答

2

您可以使用的ElementName改變父的DataContext:

<MenuFlyoutItem 
    Text="Delete" 
    Command="{Binding DataContext.DeleteComamand, ElementName=NoteListView}"/> 
+0

是,這個解決我的問題! –