2011-02-03 12 views
5

ObservableCollectionの各オブジェクトがPivotItemになるように、ObservableCollectionをWP7のPivot Contronlにデータバインドしたいとします。これは私が使用するコードです:WP7のObservableCollectionへのデータバインディングPivotItems

<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項目で、私は3 PivotItemsを取得します。しかし、すべてがロードされると、DataTemplate内のバインディングは更新されません。 FirstName、LastName、およびHomeTownがロードされる次のPivotItemにスクロールするときだけです。

なぜですか?私は何が欠けていますか?

ありがとうございました

答えて

0

私はこの動作を再現できません。私は私のObservableCollectionの2つの項目とFirstNameの同等の取得ブロック内にブレークポイントを置く私は2つのヒットを取得します。

あなたはそれが拘束されていないことをどのように検出しましたか?あなたは "次の"ピボットアイテムのコンテンツを見ることができません。どうですか?

+0

こんにちは。それは私が見ることができない "最初の" pivotitemのプロパティです。私が「次へ」をスライドすると、そのスライドが表示され、スライドすると「最初の」スライドも表示されます。 –

+0

いつObservableCollectionをインストールし、いつアイテムを追加しますか?私は私のテストを作成し、コンストラクタの項目をDataContextを設定する前に追加しました –

+0

しかし、LoadedイベントでDataContextを設定するためにテストしたが、それでも私にとっては役に立ちます。 –

0

読み込み順序や通知コードに問題があるようです。

FirstName、LastName、およびHomeTownメンバーのそれぞれにプロパティを設定するときに、PropertyChangedイベントが正しく発生していることを確認します。

1

私は同じ問題を抱えていたが、SelectedIndexを= 1を設定することでこの問題を回避するには、私に合っていませんでした。

PersonsコレクションにItemを追加するときは、最初にtemp要素を作成し、すべてのデータを埋めて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); 
    } 
} 

キーは、ピボットアイテムをバインドするコレクションのオブザーバーをフックし、それが更新するとデータコンテキストに揺れを与えています。

関連する問題