Wpf 尝试将datagrid项源绑定到另一个类中的属性
我有一个带有主窗口的WPF应用程序。主窗口由几个类型为ObservableCollection的CLR属性组成。主窗口有一个datagrid,其ItemsSource属性绑定到一个可观察的集合(工作正常)。接下来,我有一个对话框。其目的是在数据网格中显示主窗口中的一个可观察集合。对话框将在主窗口中实例化。最初,我将ObservableCollection传递给对话框的构造函数,并将其复制到对话框的CLR属性中。然后将对话框的DataContext设置为自身,并将datagrid中的ItemsSource属性绑定到CLR属性的名称。这很有效Wpf 尝试将datagrid项源绑定到另一个类中的属性,wpf,data-binding,datagrid,Wpf,Data Binding,Datagrid,我有一个带有主窗口的WPF应用程序。主窗口由几个类型为ObservableCollection的CLR属性组成。主窗口有一个datagrid,其ItemsSource属性绑定到一个可观察的集合(工作正常)。接下来,我有一个对话框。其目的是在数据网格中显示主窗口中的一个可观察集合。对话框将在主窗口中实例化。最初,我将ObservableCollection传递给对话框的构造函数,并将其复制到对话框的CLR属性中。然后将对话框的DataContext设置为自身,并将datagrid中的ItemsSo
有没有更好的方法来代替将可观察集合传递给构造函数?我尝试使用GUI编辑器将对话框中Datagrid的ItemsSource属性设置为主窗口中的observable集合,该编辑器使用RelativeAncestor生成绑定,但数据没有显示。问题是我有一堆对话框,用来显示来自主窗口的数据,我觉得应该有一个更简单的解决方案,而不是将所有内容都传递给对话框的构造函数。此外,对话框会被视为子视图吗?主窗口是一个视图。假设您的
对话框
控件名为对话框控件
,并且在其代码后面定义了一个名为项的DependencyProperty。在XAML中,我将此属性绑定到DataGrid
,如下所示:
<DataGrid ItemsSource="{Binding Items, RelativeSource={RelativeSource Mode=
FindAncestor, AncestorType={x:Type DialogControl}}" />
更新>>>
哦,我知道你现在想要什么了。。。您想从UserControl
绑定到MainWindow.xaml.cs
文件中的实际集合。您仍然可以遵循我的建议,但是您需要在main window.xaml.cs
文件中包含DependencyProperty
而不是对话框控件中的DependencyProperty
。在这种情况下,UserControl
中的绑定将是:
<DataGrid ItemsSource="{Binding Items, RelativeSource={RelativeSource Mode=
FindAncestor, AncestorType={x:Type MainWindow}}" />
要使其正常工作,Items
属性必须是dependencProperty
谢谢,但我已经在做了。我没有设置Items字段,而是将其传递给构造函数。它只是一个标准的CLR属性,而不是依赖性属性。这很好,但我只是想知道是否有一种方法可以在不将可观察集合复制到items属性的情况下实现这一点。谢谢,我将尝试该解决方案。你是外星人?哈哈。。。我猜你在谈论我的照片。。。那是Photoshop。
<DataGrid ItemsSource="{Binding Items, RelativeSource={RelativeSource Mode=
FindAncestor, AncestorType={x:Type MainWindow}}" />