Поведение по умолчанию для ListBox, используемого в приложении WP7, заключается в том, что выбранный элемент выделяется в PhoneAccentBrush. Я обнаружил, что с помощью ListBox, когда я обрабатываю событие SelectionChanged (устанавливает свойство и закрывает всплывающее окно, содержащее ListBox), я никогда не вижу изменения цвета текста на PhoneAccentBrush, поэтому пользователь никогда не получает никакой обратной связи о том, что они выбрали правильный пункт. Есть ли способ обойти это и дать пользователю обратную связь (даже если это будет только на мгновение) о том, какой элемент они выбрали.
wp7 ListBox SelectionChanged Цвет текста
comment
Я не очень понимаю, что вы имеете в виду, listBox.selectedItem выделен. Возможно, вы можете попробовать добавить элемент в шаблон данных listBox.
- person Nghia Nguyen   schedule 02.08.2011
comment
Если вы закроете всплывающее окно, содержащее список, когда вы выберете элемент в списке, что все равно останется, чтобы показать выбор?
- person Matt Lacey   schedule 02.08.2011
comment
С отложенным SelectionChaged (мой ответ ниже) пользователь получает визуальную обратную связь. Это короткое мгновение, но достаточно продолжительное, чтобы произвести впечатление на пользователя.
- person Jan Slodicka   schedule 02.08.2011
Ответы (2)
Например, задержите обработку события SelectionChanged.
void list_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Dispatcher.BeginInvoke(action);
}
void action()
{
// put your code here
}
person
Jan Slodicka
schedule
02.08.2011
Возьмите инструментарий Silverlight и добавьте эффект наклона (push-анимация, как в других приложениях).
Ссылайтесь на набор инструментов в своем проекте и добавьте пространство имен для использования набора инструментов:
<phone:PhoneApplicationPage
...
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit">
В вашем шаблоне данных добавьте прикрепленное свойство IsTiltEnabled
:
<DataTemplate>
<Grid toolkit:TiltEffect.IsTiltEnabled="True">
...
</Grid>
</DataTemplate>
person
Rico Suter
schedule
07.09.2011