Избранное в приложении Windows Phone Panorama

#windows-phone-7 #mvvm #favorites

#windows-phone-7 #mvvm #Избранное

Вопрос:

У меня есть приложение панорамы, где один из элементов панорамы является «Избранным». Для начала я использовал стандартный проект Windows Phone с ItemViewModel и MainViewModel. Я заменил строку один / два / три простой строкой «Избранное». На самом деле я загружаю данные избранного из изолированного хранилища с помощью функции loadData () и заполняю «Элементы» с помощью:

         IsolatedStorageFileStream favoritesFile = store.OpenFile("favorites.txt", FileMode.OpenOrCreate, FileAccess.Read); 
        string lines; 

        Items.Clear(); 
        using (StreamReader reader = new StreamReader(favoritesFile)) 
        { 
            while ((lines = reader.ReadLine()) != null) 
            { 
                this.Items.Add(new ItemViewModel() { Favorite = lines }); 
            } 
        } 
  

Я хотел бы иметь возможность не только просматривать мои избранные в этом элементе панорамы, но и удалять их (добавление элемента в качестве избранного рассматривается при переходе на страницу сведений об элементе). Я рассмотрел два варианта:

  • Рядом с текстом отображается желтая звездочка. Нажатие на звездочку приведет к удалению элемента из списка.
  • Какое-то действие нажатия и удержания —> удалить.

Что касается первого, я не уверен, как обновить список после удаления элемента. По-видимому, я не могу перейти на ту же страницу 🙂 Кроме того, как я могу определить, какая звезда соответствует какому избранному элементу, поскольку избранный элемент будет привязан к xaml, например:

                             <TextBlock Margin="10,10,0,0" Text="{Binding Favorite}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" Grid.Column="0" />
                            <Button Grid.Column="1" Click="FavoriteButton_Click" BorderThickness="0" Height="40">
                                <Button.Background>
                                    <ImageBrush ImageSource="/WindowsPhonePanoramaApplication2;component/Images/appbar.feature.email.rest.png" Stretch="None" />
                                </Button.Background>
                            </Button>
  

Во втором случае проблема с возможностью обнаружения, плюс я даже не знаю, поддерживается ли это для сторонних приложений. Я склоняюсь к первому варианту, поскольку он довольно интуитивно понятен. Пожалуйста, сообщите.

Комментарии:

1. Вы должны знать, что правила отправки на Marketplace не позволяют вам использовать нажатие и удержание в качестве единственного средства выполнения чего-либо. Вам все равно понадобится какая-то основная кнопка или пункт меню для удаления элементов. Нажатие и удержание предназначено для предоставления опытным пользователям ярлыка.

Ответ №1:

Если ваш список задач является ObservableCollection, который отправляет событие NotifyPropertyChanged при его изменении, то вам не нужно беспокоиться о самостоятельной загрузке списка, привязка данных позаботится об этом сама.

Для удобства обнаружения, я думаю, довольно часто нажимать и удерживать. Компонент «Нажать и удерживать» (контекстное меню) доступен бесплатно в Silverlight Toolkit для WP7 (http://silverlight.codeplex.com )

Комментарии:

1. «вам не нужно беспокоиться о самостоятельной загрузке списка, привязка данных позаботится об этом». Верно ли это и для удаления элементов? Я бы использовал обработчик щелчков для обновления «Элементов», удалив соответствующее «избранное», а не просто отредактировав его.