一般に、WPF を使用すると、 UI 要素ではなくデータを操作します。したがって、コレクション プロパティをプロパティに追加した後は、コレクション プロパティを簡単に操作できます。Binding
DataGrid.ItemsSource
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;
}