ありがとうございます。UWPとMVVM Lightを使用してTelerikデータグリッドをリフレッシュする方法
[更新]ボタンをクリックしたときにTelerikグリッドをリフレッシュするときに問題が発生しています。つまり、ユーザーがデータを変更して保存しないと決めた場合、[更新]ボタンをクリックすると、元の値でグリッドが再読み込みされます。ここで
は、更新のためのビューの私のXAMLである:ここでは
<Button Content="Refresh" Grid.Row="1" Margin="92,5,0,11" Command="{x:Bind ViewModel.RefreshDataCommand}"/>
はグリッドのためのビューの私のXAMLである:上記のコードでグリッドがバインドされていること
<tg:RadDataGrid ColumnDataOperationsMode="Flyout" x:Name="grid" ItemsSource="{Binding Source,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" SelectedItem="{x:Bind ViewModel.CurrentUserData, Mode=TwoWay}" UserEditMode="Inline" Grid.ColumnSpan="4" Grid.Row="1" AutoGenerateColumns="False">
お知らせViewModelのSourceプロパティに追加します。 ViewModelのバウンドプロパティは次のとおりです。ページがナビゲートされると、上記のプロパティはグリッド内のデータを自動的に読み込みます。ここで
は、[更新]ボタンがバインドされている機能である:私は上記の関数で実験した
private void RefreshDataCommandAction()
{
udCol[0].Name = "test1";
CurrentUserData = udCol[0];
Source = udCol;
RaisePropertyChanged("Source");
}
コードが冗長に見えませんが、関係なく、私は何をすべきか、この機能で新しい割り当て理由、それはありますUIを更新しません。理想的には、UIのセルを更新し、[元に戻す]をクリックするか、データをリロードするだけです。 ViewModelはINotifyPropertyChangedを含むViewModelBaseを継承しています。プロパティが変更されたときにUIに変更を伝播させるのに十分であるはずです。 UIを更新するだけでMVVMパターンを破りたくはありません。
私は本当にいくつかの助けに感謝します。ありがとう、事前にたくさん!
EDIT:
<tg:RadDataGrid ColumnDataOperationsMode="Flyout" x:Name="grid" ItemsSource="{x:Bind ViewModel.Source}" SelectedItem="{x:Bind ViewModel.CurrentUserData, Mode=TwoWay}" UserEditMode="Inline" Grid.ColumnSpan="4" Grid.Row="1" AutoGenerateColumns="False">
ありがとうございました。簡単な例を挙げてください。 –
Property Change Notificationの実装方法がわからない場合、MVVMの非常に重要な部分が欠落しています。おそらく最も重要なものは、それをまったく動作させるものです。私はWPVMのためにMVVMを学んだときに基本的な方法を紹介しました。それが助けてくれることを願っています:https://social.msdn.microsoft.com/Forums/en-US/b1a8bf14-4acd-4d77-9df8-bdb95b02dbe2/lets- talk-about-mvvm?forum = wpf – Christopher