방문해 주셔서 감사합니다.UWP 및 MVVM Light를 사용하여 Telerik DataGrid를 새로 고치는 방법
새로 고침 버튼을 클릭하면 Telerik 그리드를 새로 고치는 데 문제가 있습니다. 즉, 사용자가 데이터를 변경하고 저장하지 않기로 결정한 경우 새로 고침 버튼을 클릭하면 그리드가 원래 값으로 다시로드됩니다. 위의 코드에 그리드가 결합 된 것을
<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">
공지 사항 : 여기
<Button Content="Refresh" Grid.Row="1" Margin="92,5,0,11" Command="{x:Bind ViewModel.RefreshDataCommand}"/>
는 그리드보기에 내 XAML입니다 : 여기
는 새로 고침에 대한보기 내 XAML입니다 ViewModel의 Source 속성에 추가합니다.
이
public ObservableCollection<UserData> Source
{
get
{
try
{
udCol = GetUserData(FileName).Result;
return udCol;
}
catch (AggregateException ex)
{
return null;
}
}
set
{
udCol = value;
}
}
위의 속성은 자동으로 페이지를 탐색하는 그리드의 데이터를로드 다음은 뷰 모델에 바인딩 된 속성입니다. 여기
는 새로 고침 버튼에 바인딩하는 기능입니다 : 코드에 상관없이 내가이 기능에 새로운 과제를 무엇을 중복 보지 않는다하지만 왜private void RefreshDataCommandAction()
{
udCol[0].Name = "test1";
CurrentUserData = udCol[0];
Source = udCol;
RaisePropertyChanged("Source");
}
나는 위의 함수에서 실험 한
, 즉 UI를 업데이트하지 않습니다. 이상적으로 사용자는 UI의 셀을 업데이트하고 새로 고침을 클릭하여 원본으로 돌아가거나 데이터를 다시로드하십시오. ViewModel은 INotifyPropertyChanged가 포함 된 ViewModelBase를 상속 받았으며 속성이 변경되면 UI에 변경 사항을 전파하기에 충분해야한다고 생각했습니다. MVVM 패턴을 깨뜨리고 UI를 업데이트하고 싶지 않습니다.
정말 도움이됩니다. 많은 감사드립니다!!!
편집 :
<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에서 매우 중요한 부분을 놓치고 있습니다. 적절하게 작동시키는 가장 중요한 것들. WPF 용 MVVM을 배웠을 때 기초적인 방법으로 소개를 작성했습니다. 도움이되기를 바랍니다. https://social.msdn.microsoft.com/Forums/en-US/b1a8bf14-4acd-4d77-9df8-bdb95b02dbe2/lets- talk-about-mvvm? forum = wpf – Christopher