Найдено неоднозначное совпадение.
... обычно выбрасывается GetMethod
, если имеется несколько перегрузок и не указана сигнатура типа (MSDN: More than one method is found with the specified name.
). По сути, WPF-движок ищет только один такой метод.
Почему бы не проверить тип в теле метода и не выдать InvalidOperationException
, если это не разрешено?
Обратите внимание, что эти CLR-оболочки не должны включать любой код рядом с настройкой и получением, если свойство установлено в XAML , они будут игнорироваться , попробуйте вызвать исключение в сеттер, он не появится, если вы используете только XAML для установки значения.
Вместо этого используйте обратный вызов:
public static readonly DependencyProperty MyPropertyProperty =
DependencyProperty.RegisterAttached
(
"MyProperty",
typeof(object),
typeof(ThisStaticWrapperClass),
new UIPropertyMetadata(null, MyPropertyChanged) // <- This
);
public static void MyPropertyChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
{
if (o is TextBox == false && o is ComboBox == false)
{
throw new InvalidOperationException("This property may only be set on TextBoxes and ComboBoxes.");
}
}