Silverlight自定义的依赖属性如何进行双向绑定

.Net技术 码拜 6年前 (2015-05-10) 192次浏览 0个评论
 


刚学习依赖属性,还不是十分了解
我想扩展DataGrid控件,实现双击选择效果
于是注册了如下两条依赖属性
在选中2次Item之后,才对  DoubleClickSeletedItem 这条属性赋值,并且希望通过前台绑定获取到值
但事实是没有反应的……

在此求教

这里是DataGrid的扩展

public class DoubleClickDataGrid : DataGrid
    {
        #region 私有变量
        static object OldValue = "Default";
        #endregion
        #region 注册依赖属性

        /// <summary>
        /// 双击选中项
        /// </summary>
        public static readonly DependencyProperty DoubleClickSeletedItemProperty = DependencyProperty.Register("DoubleClickSeletedItem", typeof(object), typeof(DoubleClickDataGrid),
        null);

        /// <summary>
        /// 是否启用双击选中,默认为FALSE
        /// </summary>
        public static readonly DependencyProperty IsDoubleClickSelectProperty = DependencyProperty.Register("IsDoubleClickSelect", typeof(bool), typeof(DoubleClickDataGrid), new PropertyMetadata(false, IsDoubleClickSelectCallBack));

      
        #endregion
        
        #region 增强属性
        /// <summary>
        /// 选中项
        /// </summary>
        public object DoubleClickSelectedItem
        {
            get { return GetValue(DoubleClickSeletedItemProperty); }
            set
            {
                SetValue(DoubleClickSeletedItemProperty, value);
            }
        }
        /// <summary>
        /// 是否启用双击
        /// </summary>
        public bool IsDoubleClickSelect
        {
            get { return (bool)GetValue(IsDoubleClickSelectProperty); }
            set { SetValue(IsDoubleClickSelectProperty, value); 
            
            }
        }
        #endregion


        #region 回调函数
        static void IsDoubleClickSelectCallBack(DependencyObject sender, DependencyPropertyChangedEventArgs e)
        {

            var dataGird = sender as DoubleClickDataGrid;
            if (dataGird != null)
            {
                dataGird.MouseLeftButtonUp += new MouseButtonEventHandler((DSeder, DE) =>
                {
                  
                    //判断选中项是否为空
                    if (dataGird.SelectedItem != null)
                    {
                        //如果选中项与旧值相同,证明选中了2次
                        if (dataGird.SelectedItem.Equals(OldValue))
                        {
                           dataGird.DoubleClickSelectedItem = dataGird.SelectedItem;
                        }
                        //否则只是一次选中
                        else
                        {
                            OldValue = dataGird.SelectedItem;
                        
                        }

                    }
                });
            }

        }
        #endregion

       
    }

这里是前台绑定,断点跟踪,依赖属性已经被赋值,现在就是通过绑定不会自动去取值

<Extendsdk:DoubleClickDataGrid  ItemsSource="{Binding Source}" IsDoubleClickSelect="True" DoubleClickSelectedItem="{Binding ItemModel,Mode=TwoWay}"></Extendsdk:DoubleClickDataGrid>

SILVERLIGHT板块实在没人回答

我也遇到这个问题。求解答
40分
已经解决了,希望对楼主有点帮助
http://www.aitilife.com/2011/08/11/wpf-custume-dependencyproperty-twoway-binding/

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Silverlight自定义的依赖属性如何进行双向绑定
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!