c# - Windows Phone 8.1 - 菜单弹出项单击命令 c#

标签 c# xaml windows-phone-8 mvvm

我正在为 Windows Phone 8.1 编写应用程序,我想在 listView 项目上使用弹出窗口。因为我正在尽最大努力编写漂亮的应用程序,所以我尝试在一页中使用 MVVM 模式和资源字典以及模板而不是所有 xaml。 但是,我无法绑定(bind)我的 MenuFlyoutItem 命令 - 它似乎看不到页面的数据上下文,或者它有一些其他数据上下文。这是一些代码:

1) 我的模板在单独的资源字典中:

<Grid Margin="0, 0, 0, 10">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="4*" />
        </Grid.ColumnDefinitions>

        <Grid.Resources>
            <converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
            <converters:EmptyDateConverter x:Key="EmptyDateConverter" />
        </Grid.Resources>

        <i:Interaction.Behaviors>
            <icore:EventTriggerBehavior EventName="Holding">
                <converters:OpenMenuFlyoutAction />
            </icore:EventTriggerBehavior>
        </i:Interaction.Behaviors>

        <FlyoutBase.AttachedFlyout>
            <MenuFlyout>
                <MenuFlyoutItem x:Uid="AddToCalendarMenuItem" Command="{Binding AddToCalendar}" />
            </MenuFlyout>
        </FlyoutBase.AttachedFlyout>

        <Image Grid.Column="0" Source="{Binding ThumbnailUri}"/>
        <StackPanel Grid.Column="1" Orientation="Vertical" Margin="10,0,0,0">
            <TextBlock Text="{Binding Title}" Style="{StaticResource ListItemTitle}"/>
            <StackPanel Orientation="Horizontal" VerticalAlignment="Bottom">
                <TextBlock x:Uid="DvdReleaseDate" />
                <TextBlock Text="{Binding DvdRelease, Converter={StaticResource EmptyDateConverter}}" />
            </StackPanel>
        </StackPanel>
    </Grid>

2) 这是 ListView :

<ListView Grid.Row="1" x:Name="SearchListView"
                  ItemsSource="{Binding SearchList}"
                  ItemTemplate="{StaticResource SearchListTemplate}" SelectionChanged="NavigateToMovieDetails"  />

我的 ViewModel 是 app.xaml.cs 中的一种静态单例

我已经尝试在 xaml 中创建 VM 的新实例,但没有成功 - 也许我做错了事。

非常感谢您的帮助!提前致谢。

最好的问候, 罗马

最佳答案

如果你坚持使用 <ItemTemplate>您将必须为 ViewModel 中的每个模型创建一个命令,这并不理想。

要设置单个 Command 并设置一个 CommandParameter,请参阅我编写的 SO 教程,这里输入的代码太多了:

Implement a ViewModel Single Command with CommandParamater

关于c# - Windows Phone 8.1 - 菜单弹出项单击命令 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25702848/

相关文章:

xaml - 关闭页面 Xamarin Forms 时不可见控件变为可见

wpf - 单击 StackPanel 中的 'empty space' 时,上下文菜单不出现

windows-phone-8 - 如何在 Windows Phone 中将电话号码变成可点击的链接?

c# - 尝试创建实例应用程序域

c# - 从 C# 中的 DataGridView 获取选定行的第一个单元格

c# - 如何从代码隐藏动态添加 html 选择控件?

xaml - ListView 绑定(bind)仅在滚动时更新 UI

c# - Windows 手机 : need to check Wi-Fi repeatedly

c# - 在 XAML WP8 中的用户控件中的自定义按钮中公开 Click 事件

c# - 将 HttpClientHandler 传递给 HttpClient 时调用哪个 SendAsync 方法