CodeGo.net> WPF的用户控件-的UserControl DataGrid的SelectedItem绑定到一个ItemSource到UserControl外部的DataGrid

嗨,我的WPF UserControl知识大约一个小时了.因此,如果有很多关于此问题的教程或/和答案,请原谅我(老实说,我不认为这是可以做到的,并且需要重新编写代码……因此我以为我要问)

因此,在创建UserControl之前,我有一个数据网格,可以根据用户在文本框中键入的文本来过滤客户.一旦找到,该过滤器DataGrid的SelectedItem将用于绑定到包含新集合的新DataGrid.

所以….

筛选DataGrid XAML

SelectedItem="{Binding SelectedCustomer, Mode=TwoWay}"
ItemsSource="{Binding Source={StaticResource cvsCustomers}}"

用户在该网格中选择一个客户后,

一个新的DataGrid将包含基于SelectedCustomer的属性行

ItemsSource="{Binding SelectedCustomer.CustomerOrders}"

一切顺利,一切顺利.

但是,我将在项目中大量使用此Filter Customer结果功能,因此我创建了一个UserControl,其中DataGrid处于工作状态.

我已经将此UserControl放置在视图中,所以问题是我需要将UserControl中的selectedItem绑定到视图中的DataGrid. (如上)

所以我在View的DataGrid中需要这样的东西.

ItemsSource="{Binding ElementName=myUserControl, Path=SelectedCustomer.CustomerOrders}"

好的,请稍等一会儿,但我希望您能理解问题,并且我已经对手头的知识有了足够的了解.如果我做错了什么,请告诉我,然后否决该问题.

干杯

解决方法:

您可以将新的依赖项属性添加到自定义用户控件中,并将数据网格项源绑定到该属性.确保在用户控件的数据网格上处理选择更改事件,并将依赖项属性设置为所选项目.

   public object MySelectedItem
        {
            get { return (object)GetValue(MySelectedItemProperty); }
            set { SetValue(MySelectedItemProperty, value); }
        }

    // Using a DependencyProperty as the backing store for MySelectedItem.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty MySelectedItemProperty =
        DependencyProperty.Register("MySelectedItem", typeof(object), typeof(YOURUSERCONTROLTYPE), new UIPropertyMetadata(null));

处理选择更改事件

   public YourUserControl()
        {
            InitializeComponent();
            dgv.SelectionChanged += dgv_SelectionChanged; 

        }

    void dgv_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            MySelectedItem = dgv.SelectedItem;
        }

然后绑定到

ItemsSource="{Binding ElementName=myUserControl, Path=MySelectedItem.CustomerOrders}"
上一篇:python-Matplotlib:Pcolor创建巨大的图像


下一篇:EasyUi里的序列号不对齐的问题