Не меняется отображение User Control при смене переменной откуда он биндится
Всем добрый день, у меня есть Main Window, куда биндятся мои User Control, а именно Footer(нижняя часть), Header(верхняя часть), Body(часть где будут отображаться разнообразные User Control, к примеру добовление товара на одном, удаление на другом и тд.), Body Control(часть где отображены кнопки для изменения Body). И сама проблема заключается в том что что когда я в Body изначально указываю User Control который нужно загрузить, всё работает, а вот при попытке смены User Control, значение доходит до переменной откуда биндятся User Control и до xaml доходит, но по какой то причине не отображается.
Код BodyViewModel
namespace MusicShop.Modules.Body
{
public class BodyViewModel : INotifyPropertyChanged
{
private UserControl DelUser;
//public AddProductViewModel addProductViewModel { get; set; }
//public AddProductView addProductView { get; set; }
public DelProductViewModel delProductViewModel { get; set; }
public DelProductView delProductView { get; set; }
public BodyViewModel()
{
//addProductViewModel = new AddProductViewModel();
//addProductView = new AddProductView();
delProductViewModel = new DelProductViewModel();
delProductView = new DelProductView();
DelUser = delProductView;
DelUser.DataContext = delProductViewModel;
Control = DelUser;
}
private UserControl _control;
public UserControl Control
{
get { return _control; }
set
{
_control = value;
OnPropertyChanged(nameof(Control));
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
Код BodyView
<UserControl x:Class="MusicShop.Modules.Body.BodyView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:MusicShop.Modules.Body"
mc:Ignorable="d"
d:DesignHeight="900" d:DesignWidth="1536"
d:DataContext="{d:DesignInstance Type=local:BodyViewModel}">
<UserControl.Resources>
<DataTemplate DataType="{x:Type local:BodyViewModel}">
<local:BodyView/>
</DataTemplate>
</UserControl.Resources>
<Grid>
<ContentControl Content="{Binding Control}"/>
</Grid>
Код BodyControlViewModel
namespace MusicShop.Modules.BodyControl
{
public class BodyControlViewModel : INotifyPropertyChanged
{
public UserControl User;
public BodyViewModel _bodyViewModel { get; set; }
public AddProductViewModel _addProductViewModel { get; set; }
public AddProductView _addProductView { get; set; }
public RelayCommand AddControlBtn { get; set; }
public BodyControlViewModel()
{
_bodyViewModel = new BodyViewModel();
_addProductView = new AddProductView();
_addProductViewModel = new AddProductViewModel();
User = new UserControl();
User = _addProductView;
User.DataContext = _addProductViewModel;
AddControlBtn = new RelayCommand(AddControl);
}
public void AddControl()
{
_bodyViewModel.Control = User;
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}