Я искал в архивах справку, но не могу найти ничего достаточно конкретного для моей конкретной проблемы.
У меня есть TreeView, использующий MVVM для привязки данных, и все кажется хорошим.Я хочу расширить функциональность, так что я думаю, что было бы неплохо использовать пользовательский элемент управления для элементов TreeView.
Вот код XAML для шаблона иерархических данных, используемого TreeViewItems:
<HierarchicalDataTemplate
DataType="{x:Type vm:SiteViewModel}"
ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding SiteName}"/>
</StackPanel>
</HierarchicalDataTemplate>
Я хочу заменить TextBlock своим пользовательским элементом управления:
<uc:MyTextBlock InternalText="{Binding SiteName}"/>
Пользовательский элемент управления (на данный момент) просто содержит еще один TextBlock и имеет свойство зависимости с именем InternalText, т.е.
<TextBlock Text="{Binding Path=InternalText}" />
и я устанавливаю DataContext в конструкторе пользовательского элемента управления на себя:
public MyTextBlock ()
{
InitializeComponent();
DataContext = this;
}
Это не работает, , но , если я просто изменяю шаблон, чтобы он определял статический тексткажется, что он работает нормально:
<uc:MyTextBlock InternalText="Some site name"/>
Так как же получить связанные данные для передачи в пользовательский элемент управления?Возможно, это что-то простое, но я новичок в WPF, поэтому я еще не решил.
Спасибо!