WP8:带有ContextMenu的LongListSelector来删除项目

时间:2014-01-29 13:18:32

标签: c# windows-phone-8 contextmenu longlistselector

我认为我的问题很简单,但我仍然没有找到解决办法 我在每个项目中都有LongListSelectorContextMenu。当我长按LongListSelector的项目时,ContextMenu会弹出一个删除选项。我想删除所选的LongListSelector项。我的代码:

XAML:

<phone:PhoneApplicationPage
....
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
>

<Grid x:Name="LayoutRoot" Background="Transparent">
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <Grid x:Name="ContentPanel" Grid.Row="0" Margin="12,0,12,0">

        <phone:LongListSelector 
            Name="TestList"
            >
            <phone:LongListSelector.ItemTemplate
                >
                <DataTemplate>
                    <TextBlock Text="{Binding}">
                    <toolkit:ContextMenuService.ContextMenu>
                        <toolkit:ContextMenu Name="ContextMenu" >
                            <toolkit:MenuItem 
                                Name="Delete"  
                                Header="Delete" 
                                Click="Delete_Click"/>
                        </toolkit:ContextMenu>
                    </toolkit:ContextMenuService.ContextMenu>
                    </TextBlock>
                </DataTemplate>
                </phone:LongListSelector.ItemTemplate>
        </phone:LongListSelector>

    </Grid>

</Grid>

C#:

namespace TestContextMenu
{
    public partial class MainPage : PhoneApplicationPage
    {
        public List<string> Items = new List<string>
        {
            "Item1",
            "Item2",
            "Item3",
            "Item4",
            "Item5",
        };

        public MainPage()
        {
            InitializeComponent();
            TestList.ItemsSource = Items;
        }


        private void Delete_Click(object sender, RoutedEventArgs e)
        {
            Items.RemoveAt(0);
            //var item = (sender as MenuItem).DataContext;
            //TestList.ItemsSource.Remove(item);
        }
    }
}

单击“删除”后,虽然数据已被删除,但无法直观删除LongListSelector中的项目。

我看了this,但解决方案对我的情况不起作用。 任何人都知道我的代码中有什么问题请告诉我,谢谢!

1 个答案:

答案 0 :(得分:6)

尝试将List<string>替换为ObservableCollection<string>。因为ObservableCollection旨在对集合中的更改做出反应。