我正在为 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 教程,这里输入的代码太多了:
关于c# - Windows Phone 8.1 - 菜单弹出项单击命令 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25702848/