[英]How to refresh DataGrid in C# / WPF?
private void cmbEmployee_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string employee = (e.AddedItems[0] as ComboBoxItem).Content as string;
dgFake.ItemsSource = newdal2.SelectUser(employee).Tables[0].DefaultView;
}
當從組合框中單擊該員工時,此方法會填充特定員工在我的WPF窗體上的數據網格,但是,當我在第一個員工之后單擊另一個員工時,它不刷新數據網格,而是添加該員工的數據低於第一個。
如何刷新或刪除數據網格中的項目,這是在WPF Xaml Windows窗體上,它不是DataGridView。 我已經嘗試過這些,但沒有一個有效:
dgFake.Items.Refresh();
dgFake.Items.Remove(); //Required a remove item passed to the method, so too specific
dgFake.Itemssource = "";
通常使用WPF,我們操縱數據 ,而不是UI元素 。 因此,在將collection屬性Binding
到DataGrid.ItemsSource
屬性之后,我們可以簡單地使用collection屬性:
在XAML中:
<DataGrid ItemsSource="{Binding YourCollection}" ... />
然后在代碼中:
YourCollection.Clear();
或者更改項目:
YourCollection = someNewCollection;
您需要實現
INotifyPropertyChanged
接口 ,以便DataGrid
在更改此類數據后自動更新。
更新>>>
回應評論:'我已經添加了XAML代碼,當你在XAML代碼中談論'YourCollection'時需要放在什么位置?':
您需要在代碼中創建一個Bindable
集合屬性; 這可以是代碼隱藏中的DependencyProperty
,也可以是實現INotifyPropertyChanged
接口的CLR屬性。 我們通常不在UI中顯示數據庫元素,而是更喜歡定義具有所需屬性的對象類:
public static DependencyProperty EmployeesProperty = DependencyProperty.Register(
"Employees", typeof(ObservableCollection<Employee>), typeof(YourUserControl));
public ObservableCollection<Employee> Employees
{
get { return (ObservableCollection<Employee>)GetValue(EmployeesProperty); }
set { SetValue(EmployeesProperty, value); }
}
然后在cmbEmployee_SelectionChanged
處理程序方法中,您可以使用以下內容更新集合屬性的值:
private void cmbEmployee_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Employees = new ObservableCollection<Employee>();
string employee = (e.AddedItems[0] as ComboBoxItem).Content as string;
foreach (DataRow row in newdal2.SelectUser(employee).Tables[0].Rows)
{
Employees.Add(new Employee(row.Id, row.Name, row.Whatever));
}
Employees = newdal2.SelectUser(employee).Tables[0].DefaultView;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.