У меня есть проблема с отображением значков для динамического меню, которое использует viewmodels как ItemSource.
Решение, которое я использовал, описано здесь
Пользовательский интерфейс динамического меню MVVM с привязкой к ViewModel
Основной макет выглядит следующим образом
<Grid>
<Grid.Resources>
<HierarchicalDataTemplate DataType="{x:Type ViewModels:HeaderedItemViewModel}"
ItemsSource="{Binding Path=Children}">
<ContentPresenter RecognizesAccessKey="True"></ContentPresenter>
</HierarchicalDataTemplate>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Header" Value="{Binding Path=Header}" />
<Setter Property="InputGestureText" Value="{Binding Path=InputGestureText}" />
<Setter Property="Command" Value="{Binding Path=Command}" />
<Setter Property="Icon">
<Setter.Value>
<Image Source="{Binding Path=Icon}" Height="16px" Width="16px" />
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
<Menu Grid.Row="0" ItemsSource="{Binding Path=Shell.Navigation.Menus}" />
</Grid>
В вышеприведенном стиле привязка "Icon" - это "ImageSource". Это устанавливается следующим образом.
BitmapImage image = null;
if (!string.IsNullOrEmpty(imagePath))
{
image = new BitmapImage(new Uri(imagePath, UriKind.Relative));
image.CacheOption = BitmapCacheOption.OnLoad;
image.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
}
var menu = new HeaderedItemViewModel
{
Header = header,
InputGestureText = inputGesture,
ImagePath = imagePath,
Icon = image,
Command = command,
IsEnabled = isEnabled
};
Проблема, с которой я столкнулась, - это значки.
Кажется, только один значок будет отображаться за раз? Вот что я имею в виду.
И открытие раскрывающегося меню...
Как только появляется другое изображение, первый исчезает? Другими словами, видно только последнее изображение. Это происходит со всеми изображениями в меню. Любые идеи?