在此求教 这里是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/ |