首页 新闻 搜索 专区 学院

UserControl中DataGrid与ObservableCollection绑定问题

0
悬赏园豆:20 [已关闭问题] 关闭于 2017-10-20 23:00

情况是这样的一个界面有两个DataGrid列是一样的,所以为了不写两遍我就写到一个UserControl中,然后通过UserControl绑定数据。

PS:绑定的数据源都是ObservableCollection

问题:如果DataGrid直接写在view中可以Add、Remove等都可以刷新,但是通用UserControl绑定失效了。

请大家帮忙看看是我写的方法不对,还是有什么机制要处理。

 

下面是UserControl绑定部分和依赖属性代码

<DataGrid ItemsSource="{Binding ElementName=controlView_TicketOrderList, Path=DataList}"
                  BorderThickness="1"
                  RowHeaderWidth="20" HeadersVisibility="All" AutoGenerateColumns="False"
                  CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeRows="False"
                  SelectionMode="Single"
                  GridLinesVisibility="All" HorizontalGridLinesBrush="{DynamicResource GrayBrush9}" VerticalGridLinesBrush="{DynamicResource GrayBrush9}">
View Code
        #region 依赖属性
        /// <summary>
        /// 数据列表
        /// </summary>
        public static DependencyProperty DataListProperty = DependencyProperty.Register("DataList", typeof(ObservableCollection<CRefundTicketEx>), typeof(CVRefundTicketList));
        #endregion

        #region 属性
        /// <summary>
        /// 数据列表
        /// </summary>
        public ObservableCollection<CRefundTicketEx> DataList
        {
            get { return GetValue(DataListProperty) as ObservableCollection<CRefundTicketEx>; }
            set
            {
                SetValue(DataListProperty, value);
                //OnPropertyChanged("DataList");
            }
        }
        #endregion
View Code

应用代码

<ControlView:CVRefundTicketList Margin="{StaticResource TopMargin}" DataList="{Binding RefundTicketList}"/>
View Code
Selway的主页 Selway | 初学一级 | 园豆:22
提问于:2017-08-18 11:16
< >
分享
所有回答(1)
0

将ElementName=controlView_TicketOrderList这个去掉试试,直接绑定数据DataList就行了。

PS:DataGrid在ControlView:CVRefundTicketList里面,而数据RefundTicketList是一个数据列表(虽然你把ViewModel写成了Element列表来绑定),直接绑定列表中的数据即可。

唐宋元明清2188 | 园豆:127 (初学一级) | 2018-05-15 18:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册