#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. «вам не нужно беспокоиться о самостоятельной загрузке списка, привязка данных позаботится об этом». Верно ли это и для удаления элементов? Я бы использовал обработчик щелчков для обновления «Элементов», удалив соответствующее «избранное», а не просто отредактировав его.