Ну, действительно, у нас все еще есть другой путь, вам действительно понравится, если вам не нравятся эти FrameworkElementFactory
вещи.
И я думаю, что он просто вносит незначительные изменения в естественный код, то есть объявляет UserControl
и помещает в него свой контроль, а затем использует только один FrameworkElementFactory
для вызова UserControl
.
Простой демонстрационный код (в F #):
let buildView()=StackPanel()
//Build it with natural code
type MyView()=inherit UserControl(Content=buildView())
let factory=FrameworkElementFactory(typeof<MyView>)
let template=DataTemplate(VisualTree=factory)
let list=ItemsControl(ItemsSource=makeData(),ItemTemplate=template)