Не отображается Content

130
11 декабря 2019, 09:50

Можете подсказать в чем проблема. У меня есть UserControl c ListBox, с помощью него я выбираю страницу для отображения в ContentPresenter. В DataTemplate DataType кидаю ViewModel. Например:

<DataTemplate DataType="{x:Type ViewModels:DashboardViewModel}">
    <Views:Dashboard/>
</DataTemplate>

Во Views Dashboard прописываю DataContext. В ContentPresenter прописываю:

<ContentPresenter Content="{Binding CurrentContent, Mode=TwoWay}"/>

Прописываю

MenuItem = new ObservableCollection<MenuItemModel>()
{
    new MenuItemModel("Текст", "Текст", new DashboardViewModel())
};

но почему то не отображается Views Dashboard(Xaml).

UserControl:

<ListBox Style="{DynamicResource CustomListBox}" 
         ItemContainerStyle="{DynamicResource CustomListBoxItem}"
         ItemsSource="{Binding ElementName=Control, Path=ItemsSource}"
         SelectedItem="{Binding ElementName=Control, Path=SelectedItem}"> 
</ListBox>

UserControl.cs

public static readonly DependencyProperty ItemsSourceProperty =
    DependencyProperty.Register("ItemsSource", typeof(IEnumerable),
        typeof(NavigationMenu), new PropertyMetadata(default(IEnumerable)));
public static readonly DependencyProperty SelectedItemProperty =
    DependencyProperty.Register("SelectedItem", typeof(object),
        typeof(NavigationMenu), new PropertyMetadata(default(object)));
public IEnumerable ItemsSource
{
    get => (IEnumerable)GetValue(ItemsSourceProperty);
    set => SetValue(ItemsSourceProperty, value);
}
public object SelectedItem
{
    get => GetValue(SelectedItemProperty);
    set => SetValue(SelectedItemProperty, value);
}

Models: MenuItemModel

public string Icon { get; set; }
public string Name { get; set; }
public BaseViewModel ViewModel { get; set; }
public MenuItemModel(string icon, string name, BaseViewModel viewModel)
{
    Icon = icon;
    Name = name;
    ViewModel = viewModel;
}

WindowViewModel:

public ObservableCollection<MenuItemModel> MenuItem { get; set; }
public BaseViewModel currentContent;
public MenuItemModel selectedMenu;
public BaseViewModel CurrentContent
{
    get => currentContent;
    set
    {
        currentContent = value;
        OnPropertyChanget(CurrentContent.ToString());
    }
}
public MenuItemModel SelectedMenu
{
    get => selectedMenu;
    set
    {
        selectedMenu = value;
        CurrentContent = value.ViewModel;
    }
}
MenuItem = new ObservableCollection<MenuItemModel>()
{
    new MenuItemModel("Текст", "Текст", new DashboardViewModel())
};

MainWindow.xaml:

<Window.Resources>
    <DataTemplate DataType="{x:Type ViewModels:DashboardViewModel}">
        <Views:Dashboard/>
    </DataTemplate></Window.Resource>
<CustomControls:NavigationMenu ItemsSource="{Binding MenuItem}" SelectedItem="{Binding SelectedMenu, Mode=TwoWay}"/>
<ContentPresenter Content="{Binding CurrentContent, Mode=TwoWay}"/>
READ ALSO
Как определить версию dll и exe файла в C#?

Как определить версию dll и exe файла в C#?

Необходимо в приложении проверять версию dll и exe файла (данные файлы сторонние, и не используются в самой программе) так же необходимо вывести...

143
Как разделить лист на два по предикату?

Как разделить лист на два по предикату?

Имеется лист, из которого необходимо получить два согласно предикатуНа данный момент делаю так:

159
Чем интерфейс IEnumerable&lt;T&gt; отличается от IQueryable&lt;T&gt;

Чем интерфейс IEnumerable<T> отличается от IQueryable<T>

Собственно не могу понять основное отличие и для чего они были добавлены

117