[英]How to refresh Devexpress GridControl ItemsSource(as Datatable) in MVVM(WPF)
我在view(WPF)中有一個GridControl(Devexpress v13)。 一個Datatable在ViewModel中設置值並分配給ItemsSource。 但是ItemsSource只能填充初始化。 之后,Datatable的值會更改,但不會刷新。 如何對ItemsSource進行刷新?
<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));
}
}
public ObservableCollection<ClientB2B> Clients
{
get
{
return _clients;
}
set
{
if (_clients == value) return;
_clients = value;
OnPropertyChanged(); // This is what you need
}
}
實現此接口-INotifyPropertyChanged
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;
我發現了問題的原因。 我正在使用封裝,並且設置了私有值(_dtCriterias)。 因此,屬性更改事件不起作用。
定義:
private DataTable _dtCriterias;
public DataTable DtCriterias {
get { return _dtCriterias; }
set
{
_dtCriterias = value;
Notify(() => DtCriterias);
}
}
當我設置了問題數據表時:
_dtCriterias = GetValue().DefaultView.ToTable("FooTable");
解:
DtCriterias = GetValue().DefaultView.ToTable("FooTable");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.