簡體   English   中英

如何在C#/ WPF中刷新DataGrid?

[英]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屬性BindingDataGrid.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM