Использование прикрепленного свойства в созданных шаблонах вызывает исключение XamlParseException.C#

Место общения программистов C#
Ответить
Anonymous
 Использование прикрепленного свойства в созданных шаблонах вызывает исключение XamlParseException.

Сообщение Anonymous »

У меня возникли проблемы с использованием присоединенных свойств в динамическом шаблоне.
Я пишу собственный элемент управления. Предполагается, что этот элемент управления отображает элементы из некоторой коллекции, и я хочу, чтобы пользователи этого элемента управления предоставляли DisplayMemberPath, чего я могу добиться, создав ItemTemplate с помощью XamlReader следующим образом:

Код: Выделить всё

private DataTemplate CreateItemTemplate()
{
StringReader stringReader = new StringReader(
$@"

");
XmlReader xmlReader = XmlReader.Create(stringReader);
return XamlReader.Load(xmlReader) as DataTemplate;
}
Теперь я хочу, чтобы некоторые прикрепленные свойства добавляли к шаблону дополнительное поведение. Как это простое свойство прикрепленной строки:

Код: Выделить всё

internal class Foobar
{
public static readonly DependencyProperty BazProperty = DependencyProperty.RegisterAttached(
"Baz",
typeof(string),
typeof(Foobar),
new FrameworkPropertyMetadata(string.Empty, OnTextChanged));

public static string GetBaz(FrameworkElement frameworkElement) => (string)frameworkElement.GetValue(BazProperty);
public static void SetBaz(FrameworkElement frameworkElement, string value) => frameworkElement.SetValue(BazProperty, value);

private static void OnTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
}
}
Я прекрасно могу использовать это присоединенное свойство непосредственно внутри представления xaml. Но если я попытаюсь использовать это свойство внутри шаблона, я получу исключение XamlParseException. Невозможно установить неизвестный элемент "{clr-namespace:MyControl}Foobar.Baz" во время выполнения:

Код: Выделить всё

private DataTemplate CreateItemTemplate()
{
StringReader stringReader = new StringReader(
$@"

");
XmlReader xmlReader = XmlReader.Create(stringReader);
return XamlReader.Load(xmlReader) as DataTemplate;
}
Чего мне не хватает?


Подробнее здесь: https://stackoverflow.com/questions/792 ... eexception
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»