相关疑难解决方法(0)

DataTemplate中的ContextMenu绑定问题

我在LongListSelector中有一个上下文菜单.此列表在运行时创建和更新.

<phone:PanoramaItem Header="{Binding Path=LocalizedResources.SavedGamesHeader, Source={StaticResource LocalizedStrings}}" Orientation="Horizontal">
            <phone:LongListSelector Margin="0,0,-22,2" ItemsSource="{Binding SavedGames}">
                <phone:LongListSelector.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Vertical" Margin="12,2,0,20" Width="432">
                            <toolkit:ContextMenuService.ContextMenu>
                                <toolkit:ContextMenu>
                                    <toolkit:MenuItem Header="Remove" Click="RemoveSave_OnClick"/>
                                </toolkit:ContextMenu>
                            </toolkit:ContextMenuService.ContextMenu>
                            <Image Margin="10,5,10,0"  Height="173" Width="248" Source="{Binding Screen}" Stretch="Fill" HorizontalAlignment="Left"></Image>
                            <StackPanel Width="311" Margin="8,5,0,0" HorizontalAlignment="Left">
                                <TextBlock Tap="Save_OnTap" Tag="{Binding SavedGame}" Text="{Binding SaveName}" TextWrapping="Wrap" Margin="10,0" Style="{StaticResource PhoneTextExtraLargeStyle}" FontSize="{StaticResource PhoneFontSizeMedium}" Foreground="White" FontWeight="Bold" FontFamily="Arial Black" HorizontalAlignment="Left" />
                                <TextBlock Text="{Binding GameName}" TextWrapping="Wrap" Margin="10,-2,10,0" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Left" />
                                <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
                                    <TextBlock Text="Created on:" Margin="10,-2,10,0" Style="{StaticResource PhoneTextSubtleStyle}" />
                                    <TextBlock Text="{Binding Created}" TextWrapping="Wrap" Margin="5,-2,10,0" Style="{StaticResource PhoneTextSubtleStyle}" …
Run Code Online (Sandbox Code Playgroud)

c# silverlight-toolkit silverlight-4.0 windows-phone-8

5
推荐指数
1
解决办法
965
查看次数

Windows Phone Toolkit上下文菜单项在删除项目然后添加项目时绑定了错误的对象

我刚刚遇到上下文菜单的一个严重问题,我几个小时都无法解决.

为了重现这个问题,我在Visual Studio 2012中使用Windows Phone 8的应用程序模板创建了一个全新的Panorama应用程序.我通过nugget安装了Windows Phone工具包,并在绑定到Items的第一个长列表选择器的数据模板中添加了上下文菜单

<StackPanel Margin="0,-6,0,12">
    <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" FontSize="{StaticResource PhoneFontSizeExtraLarge}"/>
    <toolkit:ContextMenuService.ContextMenu>
        <toolkit:ContextMenu>
            <toolkit:MenuItem Header="{Binding LineOne}" Click="MenuItem_Click_1" Tag="{Binding}">
            </toolkit:MenuItem>
        </toolkit:ContextMenu>
    </toolkit:ContextMenuService.ContextMenu>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

我将标题设置为LineOne属性以便于调试.我附上了以下事件:

private void MenuItem_Click_1(object sender, RoutedEventArgs e)
{
    var itemViewModel = (ItemViewModel)((MenuItem)sender).Tag;
    App.ViewModel.Items.Remove(itemViewModel);
    App.ViewModel.Items.Add(new ItemViewModel { LineOne = "Test", LineTwo = "Test", LineThree = "Test" });
}
Run Code Online (Sandbox Code Playgroud)

我运行应用程序并使用上下文菜单删除第一个项目.第一个项目消失,名为Test的新项目按预期显示在列表底部.如果我持有这个新项目,则菜单项被绑定到"runtime one"(已删除的项目).

这是我可以重现错误的最简单的代码,但在我的真实应用程序中,我有相同的问题,更有意义的代码用于在不同的方法甚至不同的页面中添加和删除.我有一个命令绑定,但由于数据绑定错误,命令在错误的视图模型中使用错误的参数运行.

知道为什么会这样吗?

silverlight silverlight-toolkit windows-phone

4
推荐指数
2
解决办法
1528
查看次数