2016-10-26 13 views
0

GridControl(Devexpress v13)をビュー(WPF)に持っています。 A DatatableはViewModelで値を設定し、ItemsSourceに割り当てます。しかし、ItemsSourceは初期化のみを満たしています。後でDatatableの値は変更されますが、更新されません。 商品の仕分け方法MVVM(WPF)でDevexpress GridControl ItemsSource(Datatableとして)をリフレッシュする方法

<dxg:GridControl Name="GridControlData" DataSource="{Binding DtCriterias, Mode=TwoWay}" HorizontalAlignment="Left" VerticalAlignment="Top" AutoGenerateColumns="AddNew" Width="400" Height="100"> 

私はあなたが何を意味するか知っていれば幸いです。 ご協力いただければ幸いです。

ありがとうございます。

編集: プロパティを使用して変更:

public DataTable DtCriterias { 
      get { return _dtCriterias; } 
      set 
      { 
       _dtCriterias = value; 
       Notify(() => DtCriterias); 
      } 
     } 

protected void Notify(Expression<Func<object>> expression) 
     { 

      if (_propertyChangedEvent == null) return; 

      Notify(GetPropertyName(expression)); 
     } 

protected void Notify(string propertyName) 
     { 
      if (_propertyChangedEvent != null) 
      { 
       _propertyChangedEvent(this, new PropertyChangedEventArgs(propertyName)); 
      } 
     } 

答えて

0

をINotifyPropertyChangedの。 カプセル化を使用していますが、プライベート値(_dtCriterias)が設定されました。したがって、Property Changed Eventは機能しませんでした。

定義:

private DataTable _dtCriterias; 

public DataTable DtCriterias { 
    get { return _dtCriterias; } 
    set 
    { 
     _dtCriterias = value; 
     Notify(() => DtCriterias); 
    } 
} 

私は問題のDataTable設定しているとき:

_dtCriterias = GetValue().DefaultView.ToTable("FooTable"); 

ソリューション:

DtCriterias = GetValue().DefaultView.ToTable("FooTable"); 
0
public ObservableCollection<ClientB2B> Clients 
{ 
    get 
    { 
     return _clients; 
    } 
    set 
    { 
     if (_clients == value) return; 
     _clients = value; 
     OnPropertyChanged(); // This is what you need 
    } 
} 

このインタフェースを実装する - 私は、問題の原因を見つけ

protected void OnPropertyChanged(PropertyChangedEventArgs e) 
{ 
    PropertyChangedEventHandler handler = PropertyChanged; 
    if (handler != null) 
     handler(this, e); 
} 

protected void OnPropertyChanged(string propertyName) 
{ 
    OnPropertyChanged(new PropertyChangedEventArgs(propertyName)); 
} 

public event PropertyChangedEventHandler PropertyChanged; 
+0

を、私はプロパティ変更イベントを使用していますが、それはそれはある –

+0

をリフレッシュしません。問題ない。私のコードでObservableCollectionをDataTableに変更します。 – Bofort

+0

私は最初のコメントを編集しました:) –

関連する問題