Как сказано в названии, я пытался получить данные от 2 разных ViewModel, но на нем ничего не отображается.Я делаю это неправильно?
Вот мой XAML
<Window.DataContext>
<local:VMContainer/>
</Window.DataContext>
<Grid>
<StackPanel Orientation="Horizontal">
<ItemsControl ItemsSource="{Binding Path=VM1.LibraryVM1}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Image Width="150" Height="200" Source="{Binding Path=cover}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<ItemsControl ItemsSource="{Binding Path=VM2.LibraryVM2}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Image Width="150" Height="200" Source="{Binding Path=cover}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Grid>
Мой контейнер
public class VMContainer
{
public VModel1 VM1 { get; set; }
public VModel2 VM2 { get; set; }
}
ViewModel 1
public class VModel1
{
public DataView LibraryVM1 { get; private set; }
public VModel1()
{
DataTable vm1 = new DataTable();
using (MySqlConnection connection = new MySqlConnection("SERVER=localhost;" + "DATABASE=library;" + "UID=root;" + "PASSWORD=;"))
{
MySqlDataAdapter adapter = new MySqlDataAdapter();
adapter.SelectCommand = new MySqlCommand("Select * from index_movie_list", connection);
adapter.Fill(vm1);
}
LibraryVM1 = vm1.DefaultView;
}
}
ViewModel 2
public class VModel2
{
public DataView LibraryVM2 { get; private set; }
public VModel2()
{
DataTable vm2 = new DataTable();
using (MySqlConnection connection = new MySqlConnection("SERVER=localhost;" + "DATABASE=library;" + "UID=root;" + "PASSWORD=;"))
{
MySqlDataAdapter adapter = new MySqlDataAdapter();
adapter.SelectCommand = new MySqlCommand("Select * from index_tv_list", connection);
adapter.Fill(vm2);
}
LibraryVM2 = vm2.DefaultView;
}
}
когда я запускаю программу, она показывает только пустой белый цвет.Когда я изменяю его без контейнера и выбираю 1, только ViewModel показывает изображение, но я не могу просмотреть свою ViewModel 2. Есть ли какие-то решения для этого?
Редактировать: Проблема решена после инициализации VM1 и VM2 благодаря ответу Loocid
.