ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2019-11-21 20:05:17  阅读:236  来源: 互联网

标签:datagrid user-controls wpf xaml c


嗨,我的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}"

标签:datagrid,user-controls,wpf,xaml,c
来源: https://codeday.me/bug/20191121/2054476.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有