私はmvvmLight-frameworkと協力しています。私は2つのusercontrolsを持っています。mvvmLightでデータを保存した後でdataGridを更新するには?
つのUserControl(objectInspector)は、データを保存するためのものです:
<Button Command="{Binding ObjectModel.OkCommand}" />
これは、ビューモデルにバインドされている "objectInspectorViewModel"。
他のユーザーコントロール(アウトライン)は、それがのviewmodel「outlinerViewModel」に結合している
<DataGrid ItemsSource="{Binding Path=ObjectModels, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Grid.Row="0"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Id}" Header="ID"></DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Name}" Header="Name"></DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Length}" Header="Length"></DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Height}" Header="Height"></DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Width}" Header="Width"></DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Type}" Header="Type"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
データの全てを提示/ローディングするためのものです。
読み込みと保存が正常に動作します。しかし、私が望むのは、新しいオブジェクトを保存した後で、DataGridをリフレッシュすることです。
マイOutlinerViewModelは次のようになります。
public class OutlinerViewModel : BaseViewModel
{
public List<ObjectModel> ObjectModels { get; set; }
public OutlinerViewModel()
{
string file = [email protected]"{Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.Parent.FullName}\DataSource\objects.csv";
ObjectModels = ReadFile(file);
}
[...]
}
私ObjectInspectorViewModelは、次のようになります。
public class ObjectInspectorViewModel : BaseViewModel
{
public ObjectModel ObjectModel { get; set; } = new ObjectModel();
}
そして、これはObjectModelから「」データベース「」に新しいオブジェクトを保存するための方法であり、 :
public RelayCommand OkCommand { get; private set; }
protected override void InitCommands()
{
base.InitCommands();
OkCommand = new RelayCommand(
() =>
writeToCsv(
[email protected]"{Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.Parent.FullName}\DataSource\objects.csv",
this.ToString()),
() => IsOk);
}
MvvmLiでデータを保存した後でdataGridを更新する方法ght?
ありがとうございます。 'List ObjectModels'を' OutlinerViewModel'から 'ObjectModel'クラスに移動し、タイプをObservableCollection と再定義しました。私はDataGridを 'ObjectModel.ObjectList'にリバウンドさせます。私の 'writeToCsv()'メソッドでは、リストを更新します! –
Chpo7234