【发布时间】:2015-05-05 19:56:51
【问题描述】:
我有一个依赖属性应该从附加属性继承它的值,但它永远不会。相反,它似乎总是采用其默认值。
我的设置
我有一个继承自 Microsoft 的 DataGrid 的自定义网格和一个继承自 Microsoft 的 DataGridTextColumn 的 CustomColumn。
我的 CustomGrid 有一个带有 Inherits 标志的可继承附加属性“ShowToolTip”,而我的 CustomColumn 有一个“ShowToolTip”依赖属性。
CustomColumn“ShowToolTip”从不采用我的 CustomGrid 中设置为 ShowToolTip 的值。
CustomGrid 附加属性:
public class CustomGrid: DataGrid
{
static CustomGrid()
{
ShowToolTipProperty = DependencyProperty.RegisterAttached("ShowToolTip", typeof(bool), typeof(CustomGrid),
new FrameworkPropertyMetadata(true, FrameworkPropertyMetadataOptions.Inherits));
}
public static bool GetShowToolTip(DependencyObject target)
{
return (bool)target.GetValue(ShowToolTipProperty);
}
public static void SetShowToolTip(DependencyObject target, bool value)
{
target.SetValue(ShowToolTipProperty, value);
}
public bool ShowToolTip
{
get
{
return GetShowToolTip(this);
}
set
{
SetShowToolTip(this, value);
}
}
}
CustomColumn 属性:
public class CustomColumn : DataGridTextColumn
{
static CustomColumn ()
{
ShowToolTipProperty = CustomGrid.ShowToolTipProperty.AddOwner(typeof(CustomColumn ),
new FrameworkPropertyMetadata(true, FrameworkPropertyMetadataOptions.Inherits));
}
public bool ShowToolTip
{
get { return (bool)GetValue(ShowToolTipProperty); }
set { SetValue(ShowToolTipProperty, value); }
}
}
在 Xaml 中使用(只是绑定相关属性)
<myNamespace:CustomGrid Name="myGrid" ShowToolTip="False">
<DataGrid.Columns>
<myNamespace:CustomColumn Binding="{Binding Value1}" ShowToolTip="True"/>
<myNamespace:CustomColumn Binding="{Binding Value2}" ShowToolTip="False"/>
<myNamespace:CustomColumn Binding="{Binding Value3}" />
</DataGrid.Columns>
</myNamespace:CustomGrid >
在这个例子中我期望:
- Column1 (Value1):应该显示工具提示
- Column2(Value2):不应显示工具提示
- Column3(Value3):不应显示工具提示
我得到了什么:
- Column1 (Value1):显示工具提示
- Column2 (Value2):不显示工具提示
- Column3(Value3):SHOWS工具提示
它似乎正在为 CustomColumn 类中的属性设置默认值。
我尝试更改 CustomColumn.ShowToolTip 属性与 CustomGrid.ShowToolTip 属性的关联,但不管我做什么,它永远不会从 CustomGrid 继承值。
ShowToolTipProperty = CustomGrid.ShowToolTipProperty.AddOwner(typeof(CustomColumn ),
new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.Inherits));
我需要怎么做才能使我的 CustomColumn.ShowToolTip 属性从 CustomGrid.ShowToolTip 属性继承其值?
【问题讨论】: