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