Я тут долго не мог понять, в чем дело, когда наткнулся на такую ошибку:
"Дочерний объект с именем Name "~ChildID6" не найден в VisualTree." (вылетало на app.Run(wnd))
ItemsControl itemsControl = new ItemsControl();
DataTemplate dt = new DataTemplate();
HierarchicalDataTemplate hdt = new HierarchicalDataTemplate();
FrameworkElementFactory brdr = new FrameworkElementFactory(typeof(Border));
FrameworkElementFactory TextBlock1 = new FrameworkElementFactory(typeof(TextBlock));
FrameworkElementFactory TextBlock2 = new FrameworkElementFactory(typeof(TextBlock));
brdr.SetValue(Border.CornerRadiusProperty, new CornerRadius(2));
brdr.SetValue(Border.BorderThicknessProperty, new Thickness(2));
brdr.SetValue(Border.BorderBrushProperty, new SolidColorBrush(Colors.Red));
TextBlock1.SetBinding(TextBlock.TextProperty, bind);
TextBlock2.SetBinding(TextBlock.TextProperty, bind2);
TextBlock1.AppendChild(TextBlock2);
brdr.AppendChild(TextBlock1);
dt.VisualTree = brdr;
hdt.VisualTree = brdr;
itemsControl.ItemTemplate = dt;
itemsControl.DataContext = Workers;
itemsControl.ItemsSource = Workers;
TreeView treeView = new TreeView()
{
ItemTemplate = hdt,
DataContext = Workers,
ItemsSource = Workers
};
StackPanel stackPanel = new StackPanel();
stackPanel.Children.Add(itemsControl);
stackPanel.Children.Add(treeView);
wnd.Content = stackPanel;
app.Run(wnd);
Оказалось, два шаблона не могут разделять одни и те же элементы(т.е. к примеру, если закомментить dt.VisualTree, то все запустится без проблем).
Где можно почитать о таких особенностях WPF?
И еще вопрос не в тему, как изменить локализацию .NET Framework?