繁体   English   中英

将PivotItems数据绑定到WP7上的ObservableCollection

[英]Databinding PivotItems to ObservableCollection on WP7

我想将ObservableCollection数据绑定到WP7中的数据透视控制,以便我的ObservableCollection中的每个对象都成为一个PivotItem。 这是我使用的代码:

    <controls:Pivot x:Name="MainPivot" ItemsSource="{Binding Persons}">
        <controls:Pivot.HeaderTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding FullName}"/>
            </DataTemplate>
        </controls:Pivot.HeaderTemplate>
        <controls:Pivot.ItemTemplate>
            <DataTemplate>
                <StackPanel Margin="0,0,0,17" Width="432">
                    <TextBlock Text="{Binding FirstName}"/>
                    <TextBlock Text="{Binding LastName}"/>
                    <TextBlock Text="{Binding HomeTown}"/>
                </StackPanel>
            </DataTemplate>
        </controls:Pivot.ItemTemplate>
    </controls:Pivot>

这可以正常工作,在ObservableCollection中的tre项下,我得到三个PivotItems。 但是,当所有内容加载完毕后,DataTemplate内部的绑定将不会更新。 只有当我滚动到下一个PivotItem时,FirstName,LastName和HomeTown才会被加载。

这是为什么? 我想念什么?

谢谢

我有同样的问题,但是设置SelectedIndex = 1的解决方法不适合我。

我找到了另一种解决方案:将Item添加到Persons集合时,您应该首先创建一个temp元素,只有在填充所有数据时,才将其添加到Persons集合中。

Person tempPers = new Person() { FullName = "Abduvaliev Edem", FirstName = "Edem", LastName = "Abduvaliev", HomeTown = "Sevastopol"};
Pesrons.Add(tempPers);

经过简单的测试后,我无法重现此行为。 我在我的ObservableCollection中的两个项目的FirstName等效项的get块中放置了一个断点,得到了两次命中。

您如何检测到它没有绑定? 您看不到“下一个”枢轴项目的内容,怎么办?

听起来加载顺序或通知代码有问题。

在每个FirstName,LastName和HomeTown成员上设置属性时,请检查是否正确触发了PropertyChanged事件。

这是我的方法。 对我来说,问题是集合响应于Web方法调用而异步更新。

void Page_Loaded(object sender, RoutedEventArgs e)
{
    _log.Debug("Page loaded.");

    var vm = this.GetViewModel<TrendsViewModel>();

    if (!vm.IsInitialized)
    {
        vm.PivotItems.CollectionChanged += (origin, args) =>
        {
            this.PivotControl.DataContext = null;
            this.PivotControl.DataContext = vm;
        };

        vm.Initialize(this);
    }
}

关键是挂钩数据透视表项绑定到的集合的观察者,并在数据上下文更新时使数据上下文摇动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM