Как получить элементы управления внутри выбранного элемента из списка в WP - PullRequest
0 голосов
/ 19 января 2012

Сейчас я сталкиваюсь с самой распространенной проблемой, с которой сталкиваются многие из меня при работе со списками.Хотя я нашел много ответов на форуме, мне кажется, что ничего не работает, иначе я ошибся..

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

Моя проблема заключается в том, что при щелчке элемента списка он непокажите выбранный цвет, который по умолчанию выделен цветом телефона, прежде чем перейти на следующую страницу.Это потому, что цвет текстовых блоков уже установлен при создании списка?

Поэтому я попытался установить передний план выбранного элемента с помощью SelectionChanged () следующим образом:

ListBoxItem selItem = (ListBoxItem)(listboxNotes.ItemContainerGenerator.ContainerFromIndex(listboxNotes.SelectedIndex));
selItem .Foreground = (SolidColorBrush)Application.Current.Resources["PhoneAccentBrush"];

Но это не работает, и я предполагаю, что потому что внутри элемента есть панель стека.

Как именно это нужно сделать?Мне нужно получить текстовые блоки внутри панели стека и установить передний план?Я не использовал связывание здесь.Visual Tree Helper ???

Спасибо

Алфа

Ответы [ 2 ]

1 голос
/ 19 января 2012

ListItemContainer будет автоматически менять Foreground. Чтобы унаследовать это, просто не указывайте цвет (или стиль) на вашем TextBlock.

1 голос
/ 19 января 2012

Как правило, выбранный цвет не изменяется в списках, по которым осуществляется навигация.

Исходя из моего опыта работы с android, в WP7 нет фона 'селектора'. Если вы ищете крутой эффект пользовательского интерфейса, который показывает, что какое-то действие происходит, определенно рекомендуется TiltEffect, и его очень легко реализовать.

http://www.windowsphonegeek.com/articles/Silverlight-for-WP7-Toolkit-TiltEffect-in-depth

Однако - если вы создаете приложение, в котором нет немедленной навигации, возможно, вы захотите выбрать «выбранный» цвет ячейки / и т. Д. Я прикрепил изображение:

https://skydrive.live.com/redir.aspx?cid=ef08824b672fb5d8&resid=EF08824B672FB5D8!366&parid=EF08824B672FB5D8!343

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

internal void SelectionChanged()
        {
    var item = (((ListBoxItem) _view.servers.SelectedItem).Content) as StackPanel;
                if (item != null)
                {
                    for (int i = 0; i < _view.servers.Items.Count; i++)
                    {
                        var val = (((ListBoxItem) _view.servers.Items[i]).Content) as StackPanel;
                        var tb = val.Children[0] as TextBlock;
                        var tb2 = val.Children[1] as TextBlock;
                        if (i == _view.servers.SelectedIndex)
                        {
                            tb.Foreground = tb2.Foreground = (SolidColorBrush) App.Current.Resources["PhoneAccentBrush"];
                        }
                        else


                       {
                                tb.Foreground = tb2.Foreground = (SolidColorBrush) //regular color here, b/c all these should no longer be selected
                            }

                        }
                    }
}
...