0

サービスにバインドされたリスト ボックスがあります。正常に読み込まれ、項目を選択して 2 ページ目に移動できます。

2 番目のページでは、同じサービスから新しい監視可能なコレクションを読み込み、前のページで選択したアイテムを使用して、データ フィルターを含む新しいリストボックスを読み込みます。

この 2 番目のリストボックスでは、この選択に基づいて詳細ページをロードするためのさらなる選択が可能になります。私が持っているエラーは、2 番目のリストボックスが読み込まれ、リストの最初の項目が自動的に選択されることです。戻るボタンを押すと、何も選択されていない 2 番目のリストボックスが読み込まれます。

2 番目のリストボックスで自動選択を停止する方法を教えてください。以下のコードの詳細。

送信者を含む最初のリストボックス コード

void ServiceReference1Client_GetMensleaderListCompleted(object sender, GetMensLeaderListCompletedEventArgs e)
    {
        if (e.Error != null) { MensHeading.Text = "Connect to Data"; return; }

        ObservableCollection<Mens_Leaders> mensLeaders = e.Result;

        this.mensRankings.ItemsSource = mensLeaders;

    }

    private void mensRankings_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (mensRankings.SelectedItem != null)
        {
            Mens_Leaders SelectedPlayer = mensRankings.SelectedItem as Mens_Leaders;
            _SelectedMensPlayer = (sender as ListBox).SelectedItem;
            NavigationService.Navigate(new Uri("/Pages/PlayerProfile.xaml", UriKind.Relative));
            FrameworkElement root2 = Application.Current.RootVisual as FrameworkElement;
            root2.DataContext = _SelectedMensPlayer;
        }
    }

2 番目のリストが読み込まれるページ

private void LoadPlayerList()
    {
        Service1Client ServiceReference1Client = new Service1Client();

        ServiceReference1Client.GetTournamentListCompleted += new EventHandler<GetTournamentListCompletedEventArgs>(ServiceReference1Client_GetTournamentListCompleted);
        ServiceReference1Client.GetTournamentListAsync();

        FrameworkElement root2 = Application.Current.RootVisual as FrameworkElement;
        var currentPlayer = root2.DataContext as ATP_Tennis_App.TennisService.Mens_Leaders;
        _SelectedPlayer = currentPlayer;
        _selectedPlayerTournamentsWon = currentPlayer.Name;

    }
void ServiceReference1Client_GetTournamentListCompleted(object sender, GetTournamentListCompletedEventArgs e)
    {
        if (e.Error != null) { return; }

        ObservableCollection<Tournaments> tournamentList = e.Result;

        viewSource = new CollectionViewSource();
        viewSource.Filter += TournamentWin_Filter;
        viewSource.Source = tournamentList;
        this.listBox1.ItemsSource = viewSource.View;
    }

    void TournamentWin_Filter(object sender, FilterEventArgs e)
    {
        if (e.Item != null)
            e.Accepted = ((Tournaments)e.Item).Prev_Male_Winner.Contains(_selectedPlayerTournamentsWon);
    }

    private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (listBox1.SelectedItem != null)
        {

            Tournaments selectedTournament1 = listBox1.SelectedItem as Tournaments;

            _SelectedItemTournament = (sender as ListBox).SelectedItem;
            NavigationService.Navigate(new Uri("/Pages/TournamentDetailsPanorama.xaml", UriKind.Relative));
            FrameworkElement root3 = Application.Current.RootVisual as FrameworkElement;
            root3.DataContext = _SelectedItemTournament;

        }
        else
        {
            return;
        }
    }
4

2 に答える 2

1

リスト ボックスで、IsSynchroziedWithCurrentItem を False に設定します。これで問題は解決しました。

于 2012-07-21T10:08:12.270 に答える
0

これが汚い解決策であることは知っていますが、listBox1.SelectedIndex = -1 を設定できます

于 2012-06-01T10:28:39.560 に答える