通常使用 WPF,我们操作的是数据,而不是UI 元素。因此,在Binding
将集合属性添加到DataGrid.ItemsSource
属性之后,我们可以简单地使用集合属性:
在 XAML 中:
<DataGrid ItemsSource="{Binding YourCollection}" ... />
然后在代码中:
YourCollection.Clear();
或更改项目:
YourCollection = someNewCollection;
您将需要实现INotifyPropertyChanged
接口,以便在DataGrid
像这样更改数据后自动更新。
更新>>>
回应评论:“我已经添加了 XAML 代码,当您在 XAML 代码中谈论 'YourCollection' 时需要在此处放置什么?”:
您需要Bindable
在代码中创建一个集合属性;这可以是DependencyProperty
您的代码中的 a ,也可以是实现INotifyPropertyChanged
interface的 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;
}