Я делаю это все время - и весь метод MVVM построен на содержимом, отличном от UIElement
, вот пример:
Создайте класс, который не является производным от UIElement
, я в этом примере назову MyViewModelClass.
Создайте окно и добавьте этот код
public partial class Window1 : Window
{
public Window1()
{
DataContext = new MyViewModelClass();
InitializeComponent();
}
}
И добавить некоторые элементы управления контентом в XAML:
<Button Content="{Binding}"/>
Теперь у вас есть ContentPresenter
(внутри шаблона элемента управления Button) с MyViewModelClass в качестве содержимого.
Другой (возможно, более распространенный) пример - ItemControl
- например, ListBox
, у каждого ListBoxItem
есть ContentPresenter
, в котором все, что было в списке, равно ItemsSource
.