【发布时间】:2011-07-29 14:09:43
【问题描述】:
我只想将依赖属性附加到特定控件。
如果这只是一种类型,我可以这样做:
public static readonly DependencyProperty MyPropertyProperty = DependencyProperty.RegisterAttached("MyProperty", typeof(object), typeof(ThisStaticWrapperClass));
public static object GetMyProperty(MyControl control)
{
if (control == null) { throw new ArgumentNullException("control"); }
return control.GetValue(MyPropertyProperty);
}
public static void SetMyProperty(MyControl control, object value)
{
if (control == null) { throw new ArgumentNullException("control"); }
control.SetValue(MyPropertyProperty, value);
}
(所以:在 Get/Set-Methods 中限制 Control 类型)
但现在我也想允许该属性附加到不同类型的 Control。
您会尝试为具有该新类型的两种方法添加重载,但由于 “未知构建错误,发现不明确的匹配”而无法编译。
那么如何将我的DependencyProperty 限制为Controls 的选择?
(注意:在我的具体情况下,TextBox 和ComboBox 需要它)
【问题讨论】:
-
澄清如果您有两种方法
SetMyProperty(TextBox control, object value)和SetMyProperty(ComboBox control, object value)会出现错误?如果是这样,则可能是附加财产制度的限制。如果是这样,除了附加到最大的公共基类并在它附加到不受支持的控件类型时抛出异常之外,可能没有其他方法...... -
@Will - 是的,这就是我尝试的方法 =( 那太糟糕了,所以我必须先 "allow" 为所有
Controls 使用它...
标签: c# .net wpf dependency-properties