2011-02-03 70 views
5

我想将ObservableCollection数据绑定到WP7中的透视控制点,以便ObservableCollection中的每个对象都变为透视对象。这是我使用的代码:在WP7上将数据透视项目数据绑定到ObservableCollection

<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才会被加载。

这是为什么?我错过了什么?

谢谢

回答

0

在做了一个简单的测试后,我无法重现此行为。我在我的ObservableCollection中的两个项目的等价名字的get块中放置了一个断点,我得到了两个命中。

你是如何检测到它没有被绑定的?你看不到“下一个”的pivotitems内容,那么如何?

+0

嗨乔纳斯。这是我无法看到的“第一个”pivotitem的属性。当我滑到显示出来的“下一个”,当我滑回去时,“第一”也如此。 – 2011-02-03 09:55:47

+0

你什么时候创建ObservableCollection,你什么时候添加项目?我测试我创建并在构造函数之前添加项目之前设置DataContext – 2011-02-03 10:24:42

0

听起来像加载订单或通知代码有问题。

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

1

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

我发现了另一种解决方案:当您将项目添加到您的Persons集合中时,您应该首先创建一个临时元素,并且只有当您填充所有数据时才会将其添加到您的Persons集合中。

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

以下是我的操作方法。对我来说,问题在于集合异步更新以响应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); 
    } 
} 

关键是连接数据透视项绑定到的集合的观察者,并在数据更新时给数据上下文一个摇动。

相关问题