У меня есть простой пользовательский элемент управления для отображения гиперссылки в текстовом блоке:
LinkTextBlock.xaml:
<TextBlock >
<Hyperlink NavigateUri="{Binding Url, ElementName=root}" >
<TextBlock Text="{Binding Text, ElementName=root}" />
</Hyperlink>
</TextBlock>
LinkTextBlock.xaml.cs:
public static readonly DependencyProperty UrlProperty = DependencyProperty.Register("Url", typeof (string), typeof (LinkTextBlock));
public string Url
{
get { return (string) GetValue(UrlProperty); }
set { SetValue(UrlProperty, value); }
}
public static readonly DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof (string), typeof (LinkTextBlock));
public string Text
{
get { return (string) GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
Затем в DataTemplate для ListBox у меня есть:
<Controls:LinkTextBlock Text="{Binding Email}" Url="{Binding Email}" />
Когда я запускаю приложение, оно, кажется, работает отлично. Элемент управления показывает гиперссылки правильно, и нет никаких видимых проблем. Однако, когда я смотрю в окно вывода, я получаю исключения, по одному для каждого элемента ListBox:
Ошибка System.Windows.Data: 22: невозможно
конвертировать '' из типа '' в
введите 'System.Uri' для культуры 'en-US'
с преобразованиями по умолчанию; рассматривать
используя свойство Converter Binding.
NotSupportedException: 'System.NotSupportedException:
UriTypeConverter не может конвертировать из
(ноль). в
System.ComponentModel.TypeConverter.GetConvertFromException (Объект
значение) в
System.ComponentModel.TypeConverter.ConvertFrom (ITypeDescriptorContext
контекст, КультураИнфо культура, Объект
значение) в
System.UriTypeConverter.ConvertFrom (ITypeDescriptorContext
контекст, КультураИнфо культура, Объект
значение) в
MS.Internal.Data.DefaultValueConverter.ConvertHelper (Объект
o, введите destinationType,
DependencyObject targetElement,
КультураИнфо, Булевская культура
isForward) '
Почему это происходит? Я знаю, что ошибка привязки является результатом привязки к NavigateURI.
У вас есть предложения для меня? Что я могу с этим поделать? Я действительно ценю ваш вклад.
Спасибо