Невозможно перейти к элементу ListBox после возврата из этого элемента - PullRequest
0 голосов
/ 02 января 2012

У меня есть ListBox, который заполняется из источника XML и привязывается к базе данных, чтобы дать мне значения, затем я настроил его для перехода к Relative Uri, когда он выбран.

Моя проблема в том, что когда я использую аппаратную кнопку «Назад», я не могу выбрать элемент, который ранее выбрал. Я поиграл и заставил его работать, если жестко запрограммировал навигацию по кнопке «Назад», но я уверен, что есть более точный способ решить эту проблему.

Код можно найти ниже, и любая помощь будет оценена.

XAML:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <ListBox x:Name="ABCitems" SelectionChanged="ABC_SelectionChanged">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Margin="0,0,0,0" Width="432" Height="100">
                    <TextBlock Text="{Binding name}" 
                               Margin="62,0,0,0" 
                               TextWrapping="Wrap"   
                               Style="{StaticResource PhoneTextExtraLargeStyle}"
                               Foreground="Black" />
                    <Image Height="50" 
                           Width="50" Margin="0,-50,0,0" 
                           HorizontalAlignment="Left" 
                           VerticalAlignment="Center" 
                           Source="{Binding image}" />
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>

XAML.CS

private void ABCitems_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (ABCitems.SelectedItem != null)
    {
        Menu m = ABCitems.SelectedItem as Menu;

        if (m.extUri.IsAbsoluteUri == true)
        {
            string link = m.extUri.ToString();

            NavigationService.Navigate(
                new Uri("/Web.xaml?link=" + link, UriKind.Relative));
        }

        else
        {
            NavigationService.Navigate(m.extUri);
        }
    }
}

1 Ответ

0 голосов
/ 02 января 2012

я не уверен, что вы используете шаблон MVVM на wpf ... но если вы хотите сохранить значения в представлениях во время навигации, я думаю, вам следует начать использовать шаблон MVVM ... я не пробовал это на WPF, но в одном из моихВ приложении Silverlight я создал статический класс, который работает как SessionManager, используя статический словарь.и при переходе от представления я сохраняю ViewModel в моем сеансе ... и когда я возвращаюсь к своему виду с помощью кнопки назад, я пытаюсь получить ViewModel из моего сеанса и снова установить его как DataContext ...

     public Page1()
    {
        InitializeComponent();

        if (SessionManager.Exist("PageViewModel"))
        {
            this.DataContext = SessionManager.Get<Page1ViewModel>("PageViewModel");
        }
        else
            this.DataContext = new PageViewModel();
    }

здесь SessionManager будет статическим классом, содержащим словарь для хранения объектов.

Надеюсь, это может быть хорошим указателем.

С уважением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...