0

Silverlight で 2 つの異なるツリービューにバインドしようとしているカスタム コレクション クラスを作成しました。コレクションは INotifyCollectionChanged を実装し、コレクションが保持する型は INotifyPropertyChanged を実装します。GUI には、2 つのツリービューの間にある DataGrid があります。これは、左側のツリービューから項目をドラッグして操作できる領域です。変更は、2 番目のツリービューに反映されます。最初のツリービューは一度だけバインドし、2 番目のツリービューはソースに変更があるたびに更新する必要があります。ただし、何らかの理由で、最初のツリービューでの OneTime バインディングがまったく機能していないようです。ツリービューは引き続き更新されます。型が INotifyCollectionChanged または INotifyPropertyChanged を実装している場合、OneTime バインディングは機能しますか? ツリービューのマークアップ t 正しく動作することは、これに似ています。問題に関係のないいくつかの詳細を削除しました。ツリービューの DataContext は、Client と呼ばれるタイプに設定されます。たとえば、_tv.DataContext = client. 各クライアントには計画のコレクションがあり、各計画には割り当てのコレクションがあります。ツリービューに HierarchicalDataTemplate を使用しています。私は何かを見落としていますか?INotifyPropertyChanged と INotifyCollectionChanged が正しく実装されています。ロジックの問題ではないと思います。

<sdk:TreeView Name="_tv" ItemsSource="{Binding Plans, Mode=OneTime}">
  <sdk:TreeView.ItemTemplate>
    <sdk:HierarchicalDataTemplate ItemsSource="{Binding Allocations, Mode=OneTime}">
      <TextBlock Text="{Binding Name, Mode=OneTime}"/>
        <sdk:HierarchicalDataTemplate.ItemTemplate>
          <DataTemplate>
            <TextBlock>
              <Run Text="{Binding Fund.Allocations.Count}"></Run>
              <Run Text="{Binding Fund.Symbol}"></Run>
              <Run Text="{Binding Fund.Name}"></Run>
              <Run Text="{Binding Fund.AssetClass}"></Run>
            </TextBlock>
          </DataTemplate>
        </sdk:HierarchicalDataTemplate.ItemTemplate>
      </sdk:HierarchicalDataTemplate>
  </sdk:TreeView.ItemTemplate>
</sdk:TreeView>
4

1 に答える 1