2017-12-26 42 views
0

방문해 주셔서 감사합니다.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"> 

답변

0

소스가 변경 알림을 구현하지 않기 때문에 UI가 당신을 알 수있는 방법이 있습니다 : 그것은 내 ADD 기능을 파산 때문에 다시이에보기에 내 XAML을 변경

다른 인스턴스가 지정되었습니다. MVVM에서 목록의 양식을 결합하면

, 3 개 부분 변경 알림이 필요합니다

  • 때에 프로퍼티는 (소스)
  • 목록 자체에 대한 목록을 노출을
  • (관찰 컬렉션이 처리한다)
  • 귀하가 드러내는 유형의 각 속성 (UserData의 모든 속성)
+0

감사합니다. 간단한 예를 들어 주시겠습니까? –

+0

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