私はMVVMパターンを使用しています。 DataGridのリフレッシュメソッドを使用したいと思います。 私はまた、次のリンクとその便利通過した: How to refresh a WPF DataGrid?viewmodelのDatagrid.Items.Refresh()を使用
が、私の問題がある:私はこのようなのviewmodelに1つのDataGridオブジェクトを作成しました:
はpublic DataGrid ActiveGrid=new DataGrid();
public void RefreshGrid()
{
View.Dispatcher.Invoke((Action)(() =>
ActiveGrid.Items.Refresh()
));
}
と私のDataGridのitemsourceがすでに別にバインドされていますコレクション例:
<DataGrid x:Name="ActiveGrid"
IsReadOnly="True"
ItemsSource="{Binding ActiveCallCollection}"
SelectedItem="{Binding ActiveGridCollection,
Mode=TwoWay}" SelectionMode="Single"
Visibility="{Binding IsActiveCallsSelected,
Converter={StaticResource BooleanToVisibilityConverter}}"
d:LayoutOverrides="Height">
xamlデータグリッドにActiveGridをバインドする方法を教えてください。
に更新されないことが、私はわからないんだけどあなたのビューモデル。 ActiveCallCollectionに項目を追加したためにDataGridを更新したい場合は、INotifyPropertyChangedを使用して、そのコレクションで何かが変更されたことをUIに伝える必要があります。実際にコレクションをデータバインディングしてアイテムを動的に追加する場合は、ObservableCollectionを使用することをお勧めします。このコレクションにアイテムを追加すると、新しいアイテムを取得したことが既に通知されます。 –
私のActiveCallCollectionは実際にObservableCollectionです。私もINotifyPropertyChangedを試してみました。 DataGridはローを切り替えると更新され、ObservableCollectionにデータが来るとすぐには機能しません。または、xamlウィンドウで直接refresh()メソッドを使用できますか?どのように? – deathrace
あなたの質問に答えるには "どうすればActiveGridをxaml DataGridにバインドできますか?" xamlからDataGridを削除してContentPresenterにし、ActiveGridをpublicプロパティにすることができます。 ''しかし、ここでは正しいオプションではないと思います。コンストラクタ**の後に新しいobservableコレクション**を作成した場合は、コレクションをNotifyPropertyChangedする必要があります。 –