Wpf ListView中的XAML MenuFlyoutItem命令绑定

Wpf ListView中的XAML MenuFlyoutItem命令绑定,wpf,listview,data-binding,windows-phone-8.1,mvvm-light,Wpf,Listview,Data Binding,Windows Phone 8.1,Mvvm Light,我在项目中使用MVVM light,在NoteListPage中有一个ListView。在ListView中,我定义了2个MenuFlyoutItem,我想用我在视图模型中创建的命令绑定每个MenuFlyoutItem 以下是my NoteListPage.xaml中的一些详细信息: DataContext="{Binding NoteListPage, Source={StaticResource Locator}}"> 在我的视图模型中,我有: public Observab

我在项目中使用MVVM light,在NoteListPage中有一个ListView。在ListView中,我定义了2个MenuFlyoutItem,我想用我在视图模型中创建的命令绑定每个MenuFlyoutItem

以下是my 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; }
public observeablecollection注释列表
{
获取{return\u noteList;}
set{set(()=>NoteList,ref_NoteList,value);}
}
public ICommand DeleteComamand{get;private set;}
公共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

如何将DeleteComamand和EditCommand绑定到MenuFlyoutItem,但在这种情况下ListView ItemSource仍然绑定到NoteList?否则,列表视图页面不会显示任何项目标题/内容。

您可以使用ElementName更改为父数据上下文:

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


感谢您提供此代码片段,它可能会提供一些有限的即时帮助。通过展示为什么这是一个很好的问题解决方案,A将极大地提高它的长期价值,并将使它对未来有其他类似问题的读者更有用。请在您的回答中添加一些解释,包括您所做的假设。
<Button 
      Name="BtnMessages"
      Style="{StaticResource HdIconButtonStyle}"
      Command="{Binding ButtonCommand}">                          

      <Button.Flyout>
          <Flyout>
              <ListView x:Name="myList"
                          ItemsSource="{Binding Notifications, Mode=TwoWay}"
                          Margin="10"
                          ItemContainerStyle="{StaticResource NotificationListViewStyle}">
                  <ItemsControl.ItemTemplate>
                      <DataTemplate>
                          <Grid Margin="12,9,0,8">
                              <Interactivity:Interaction.Behaviors>
                                  <Core:EventTriggerBehavior EventName="Tapped">
                                      <Core:InvokeCommandAction Command="{Binding DataContext.MyCommand, ElementName=myList}"/>
                                  </Core:EventTriggerBehavior>
                              </Interactivity:Interaction.Behaviors>
                              <Grid.RowDefinitions>
                                  <RowDefinition Height="Auto"></RowDefinition>
                                  <RowDefinition Height="30"></RowDefinition>
                              </Grid.RowDefinitions>
                              <Grid.ColumnDefinitions>
                                  <ColumnDefinition Width="255"></ColumnDefinition>
                              </Grid.ColumnDefinitions>
                              <TextBlock  Grid.Row="0"
                                              Grid.Column="0"
                                             Text="{Binding Message}" 
                                                  Style="{ThemeResource Style1}"
                                             TextWrapping="Wrap"/>
                              <TextBlock Grid.Row="1"
                                                 Grid.Column="0"
                                                 Margin="0,5,0,0"
                                                 Style="{StaticResource Style2}"
                                                 Text="29 minutes ago" 
                                                 TextWrapping="Wrap"/>
                          </Grid>
                      </DataTemplate>
                  </ItemsControl.ItemTemplate>
              </ListView>

          </Flyout>
      </Button.Flyout>
  </Button>