У меня есть пользовательский элемент управления с текстовым полем. Я попытался открыть свойство Text для texbox, реализовав свойство DependencyProperty с тем же именем в UserControl. Таким образом:
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text",
typeof(string),
typeof(UserControlWithTextBox),
new UIPropertyMetadata(string.Empty));
public string Text
{
get { return (string)GetValue(TextProperty); }
set
{
SetValue(TextProperty, value);
textBox.Text = value;
}
}
Кажется, что в моем приложении get part работает нормально. Однако я попытался связать свойство IsEnabled кнопки со свойством Text двух из этих пользовательских элементов управления, используя конвертер, который проверяет, являются ли оба свойства текста пользовательского элемента пустыми строками. При загрузке окна приложения появляется следующая ошибка:
System.InvalidCastException не обработано
Сообщение = "Невозможно преобразовать объект типа MS.Internal.NamedObject в тип System.String."
Метод Convert выглядит так:
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return (string) values[0] != string.Empty &&
(string) values[1] != string.Empty;
}
значения [0] и значения [1] оба имеют значение DependencyProperty.UnsetValue при возникновении исключения.
Где я ошибся?