0

我有两张桌子。来自在线服务的表 1,它在我的原始页面上形成了列表框。第二个表位于内部数据库中,包含一个与 table1 中的字段具有相同值的 uniqie 字段。

我想使用表 1 中的列表框在单独的页面中从 table2 加载详细信息。

下面的代码是我第二页的代码,但是它不断抛出异常“在使用 ItemSource 之前,Items Collection 必须为空”

有人可以更正此代码或提出更好的方法吗?

public partial class PlayerProfilePanoramaPage : PhoneApplicationPage
{
    object _SelectedPlayer;
    string _playerName;
    public CollectionViewSource viewsource { get; set; }

    public PlayerProfilePanoramaPage()
    {
        InitializeComponent();
        Loaded += new RoutedEventHandler(PhoneApplicationPage_Loaded);
        LoadPlayerProfile();
        LoadPlayerDetails();
    }

    private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
    {
        this.DataContext = _SelectedPlayer;

    }

    private void LoadPlayerProfile()
    {
        FrameworkElement root2 = Application.Current.RootVisual as FrameworkElement;
        var currentplayer = root2.DataContext as Mens_Leaders;
        _SelectedPlayer = currentplayer;
        _playerName = currentplayer.Name;


    }

    private void LoadPlayerDetails()
    {
        ObservableCollection<PlayerProfileTable> playerProfile = new ObservableCollection<PlayerProfileTable>();


        viewsource = new CollectionViewSource();
        viewsource.Filter += PlayerProfile_Filter;
        viewsource.Source = playerProfile;
        this.PlayerPanorama.ItemsSource = viewsource.View;
    }

    void PlayerProfile_Filter(object sender, FilterEventArgs e)
    {
        if (e.Item != null)
            e.Accepted = ((PlayerProfile)e.Item).Name.Equals(_playerName);
    }
}

编辑:Xaml 目前只是简单的绑定工作的文本。未在 Xaml 中定义的数据上下文和源绑定在代码中定义。下面提供的 Xaml 代码。

<controls:Panorama Name="PlayerPanorama" Title="my application">

        <!--Panorama item one-->
        <controls:PanoramaItem Name="panoramaPage1" Header="item1">
            <Grid Name="Grid1">
                <StackPanel>
                    <TextBlock Height="30" Name="textBlock1" Text="{Binding PlayerName, FallbackValue=Name}" />
                    <TextBlock Height="30" Name="textBlock2" Text="{Binding Height, FallbackValue=Height}" />
                    <ScrollViewer Height="387" Name="scrollViewer1" Width="422">
                        <TextBlock Height="auto" Name="textBlock3" Text="{Binding ProfileBlurb, FallbackValue=Blurb}" />
                    </ScrollViewer> 
                </StackPanel>
            </Grid>
        </controls:PanoramaItem>
4

0 回答 0