Предположим, у меня есть прикрепленное свойство "Attached.Template" типа DataTemplate в пространстве имен ns, которое я хочу установить на свой UserControl через XAML. Есть ли синтаксис, который позволяет мне сделать это? Вот некоторые вещи, которые не работают:
<!-- fails; UserControl may have only one child -->
<UserControl>
<ns:Attached.Template>
<DataTemplate />
</ns:Attached.Template>
<Grid />
</UserControl>
<!-- fails; the '(' character cannot be included in a name -->
<UserControl>
<UserControl.(ns:Attached.Template)>
<DataTemplate />
</UserControl.(ns:Attached.Template)>
<Grid />
</UserControl>
<!-- fails; "UserControl.ns" is an undeclared prefix -->
<UserControl>
<UserControl.ns:Attached.Template>
<DataTemplate />
</UserControl.ns:Attached.Template>
<Grid />
</UserControl>
Определение свойства очень стандартное; просто следуя встроенному шаблону R #:
public static class Attached
{
public static readonly DependencyProperty TemplateProperty = DependencyProperty.RegisterAttached(
"Template", typeof(DataTemplate), typeof(Attached),
new PropertyMetadata(default(DataTemplate)));
public static void SetTemplate(DependencyObject element, DataTemplate value) =>
element.SetValue(TemplateProperty, value);
public static DataTemplate GetTemplate(DependencyObject element) =>
(DataTemplate) element.GetValue(TemplateProperty);
}