Я использую Mahapps Metro и Mahapps IconPack.
xmlns:icons="http://metro.mahapps.com/winfx/xaml/iconpacks"
У меня есть Itemscontrols
, что работает, как и ожидалось, например:
<ItemsControl ItemsSource="{Binding MyCollection}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button>
<icons:MaterialDesign Kind="Home"/>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Теперь я хочу установить Icon
из collection
для каждого item
.
<ItemsControl ItemsSource="{Binding MyCollection}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button>
<icons:MaterialDesign Kind="{Binding icon}"/>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
У меня есть свойство, которое будет добавлено в коллекцию:
public MahApps.Metro.IconPacks.PackIconMaterialKind MyIcon = MahApps.Metro.IconPacks.PackIconMaterialKind.AbTesting;
Если я это сделаю, я получит следующую ошибку:
Binding 'может быть установлен только на DependencyProperty объекта DependencyObject.
Я пытался настроить DependencyObject
следующим образом:
public static readonly DependencyProperty MyIcon =
DependencyProperty.Register(nameof(MyIcon), typeof(MahApps.Metro.IconPacks.PackIconMaterialKind), typeof(MahApps.Metro.IconPacks.PackIconMaterialKind), new PropertyMetadata(null));
public MahApps.Metro.IconPacks.PackIconMaterialKind myIcon
{
get { return (MahApps.Metro.IconPacks.PackIconMaterialKind)GetValue(dependencyProperty); }
set { SetValue(dependencyProperty, value); }
}
Но GetValue
и SetValue
не распознаются.
Я также пытался установить это через style
, но затем только string
до icon
будет установлен как content
, а не как icon
.
Может кто-нибудь, пожалуйста, объясните мне, где я потерялся, и как это сделать.
Большое спасибо.
Спасибо за комментарии. Я смог понять это.
Я добавил:
public PackIconMaterialDesign IconMaterialDesign => new PackIconMaterialDesign { Kind = PackIconMaterialDesignKind.AccessAlarm, Height = 30, Width = 30 };
А потом я смог связать это:
<Button Command="{Binding ViewModelRouter}"
CommandParameter="{Binding ViewModelName}"
Style="{StaticResource MenuButton}"
Content="{Binding IconMaterialDesign}" >