Я хочу просто показывать мой UserControl
в отдельном окне, например, вызвавПоказать новое окно с DataContext
var windowHandler = new WindowHandler();
windowHandler.Show(new SchoolViewModel);
Как архивировать это? Я попытался следующие:
Установите DataTemplate
в App.xaml:
<Application.Resources>
<ResourceDictionary>
<DataTemplate DataType="{x:Type viewModel:SchoolViewModel}">
<view:SchoolUserControl />
</DataTemplate>
</ResourceDictionary>
</Application.Resources>
В коде-за его называют:
private void Application_Startup(object sender, StartupEventArgs e)
{
var windowHandler = new WindowHandler();
windowHandler.ShowWindow(new SchoolViewModel(), 200, 200);
}
WindowHandler класс:
public class WindowHandler
{
public void ShowWindow(object dataContext, int height, int width)
{
Window window = new Window()
{
DataContext = dataContext,
Width = width,
Height = height
};
window.Show();
}
}
It показывает окно, но оно пустое. Почему он пуст? Я также установить DataContext
в UserControl
«s фоновым кодом:
public SchoolUserControl()
{
InitializeComponent();
DataContext = this;
}
Вы никогда не добавляете свой контроль в окно, вы просто помещаете его в словарь ресурсов. –
Как правило, * никогда * явно не задает DataContext UserControl, независимо от того, что они говорят вам в блогах или онлайн-учебнике. – Clemens
@BradleyUffner Что вы подразумеваете под этим? – HWWCAAx