ObservableCollectionにバインドした単純なTreeviewを作成します。ObservableCollectionソースを持つTreeView、更新なし
ObservableCollection<IMarketDataViewModel> MarketDataItems;
public interface IMarketDataViewModel
{
string Title { get; }
ObservableCollection<IMarketDataViewModel> Items { get; set; }
}
public MarketDataUserControl(IMarketDataViewer viewModel)
{
InitializeComponent();
DataContext = viewModel;
marketDataTreeView.ItemsSource = viewModel.MarketDataItems;
}
私のViewModelでデータを更新すると、ツリービューの最初のレベルしか表示されません。私はこの問題を解決するために見つけた唯一の方法は、私のViewModelにイベントを作成することで、データが代わりにMarketDataItems上にPropertyChangeを呼び出して更新されたとき、私はイベントをトリガし、表示は次のようにmarketDataTreeView.ItemsSourceをリセットします。
private void ViewModelOnOnUpdateItems()
{
marketDataTreeView.ItemsSource = null;
marketDataTreeView.ItemsSource = viewModel.MarketDataItems;
}
そして、この作業は完全に - >すべてのレベルが表示されます。
誰かが、PropertyChangeが機能しない理由とItemsSourceをリセットする必要がある理由を知っていますか?
プロパティでバインディングを実行する必要があります。 –