Динамическое меню MVVM

272
13 декабря 2017, 20:39

Нужно создать меню, одна часть которого будет загружаться при запуске программы, а вторая часть будет статическая. Каким образом можно это реализовать?

ViewModel:

private List<IPlugin> _plugins;
public List<IPlugin> Plugins { get => _plugins; set { Set(ref _plugins, value); } }

View:

<Menu Name="MainMenu" Grid.Row="0">    
    <MenuItem Header="File">
        <MenuItem Header="Open" Command="{Binding mMenuFileOpen_Click}"/>
        <MenuItem Header="Save" Command="{Binding mMenuFileSave_Click}"/>
    </MenuItem>
    <MenuItem Header="Plugins">
        /*Здесь должны быть плагины*/            
    </MenuItem>
</Menu>
Answer 1

Раз вы используете MVVM, тогда привязывайтесь через ItemsSource:

<MenuItem Header="Plugins" ItemsSource="{Binding Plugins}"/>

Чтобы настроить отображение плагинов, можно задать DisplayMemberPath. Например, если название плагина находится в свойстве Name, используйте

<MenuItem Header="Plugins" ItemsSource="{Binding Plugins}" DisplayMemberPath="Name"/>

Если вам нужно что-то более сложное, используйте ItemTemplate:

<MenuItem Header="Plugins" ItemsSource="{Binding Plugins}">
    <MenuItem.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Name}" FontStyle="Italic"/>
        </DataTemplate>
    </MenuItem.ItemTemplate>
</MenuItem>
READ ALSO
C# .NET замена содержимого блока &lt;div&gt;

C# .NET замена содержимого блока <div>

К примеру у нас имеется divreklama ,а в нем картинка Как с помощью HttpListener или чего-то другого изменить содержимое div

211
Узнать URL до загрузки страницы C# WebDriver

Узнать URL до загрузки страницы C# WebDriver

Добрый деньВозникла следующая задачка: приложение на selenium должно узнавать url загружаемой страницы до ее загрузки, проверять, соответствует...

215
VS C# база данных mssql

VS C# база данных mssql

Как можно изменить путь подключения к бд, чтобы при переносе на другой комп заново не прописывать новый путь к базе данных? Чтобы без этого...

221
Ошибка при десериализации XML C#

Ошибка при десериализации XML C#

При попытке десериализации XML происходит ошибкаПрошу помощи чтобы разобраться с причиной ошибки

278