Dynamic MaterialDesign PackIconKind из XML конфигурации в приложении WPF
Я разрабатываю одно настольное приложение WPF, в котором дизайн пользовательского интерфейса полностью управляется файлом конфигурации. У меня есть MenuItems, который использует MaterialDesign PackIcons. У меня есть PackIcons, упомянутые в файле конфигурации для каждого пункта меню. например
<MenuItem Name="Menu1">
....
<Icon Type="MaterialDesign">NewBox</Icon>
</MenuItem>
<MenuItem Name="Menu2">
....
<Icon Type="MaterialDesign">ExitToApp</Icon>
</MenuItem>
Теперь я хочу использовать эти имена значков при проектировании элементов меню. В XAML я знаю, как это сделать
<MenuItem Header="New" Click="MenuItem_NewClick" >
<MenuItem.Icon>
<materialDesign:PackIcon Kind="NewBox" />
</MenuItem.Icon>
</MenuItem>
Но я сталкиваюсь с проблемой, когда пытаюсь сделать это с помощью кода. Обычно мы можем сделать это с помощью следующей строки кода, если у нас исправлен значок
MenuItem.Icon = new MaterialDesignThemes.Wpf.PackIcon { Kind = MaterialDesignThemes.Wpf.PackIconKind.NewBox};
Может ли кто-нибудь помочь мне, рассказав, как я могу использовать динамический значок через код?
Благодарность
1 ответ
Вы можете использовать Enum.Parse
или Enum.TryParse
метод преобразования string
ценность для PackIconKind
, например:
var kind = (MaterialDesignThemes.Wpf.PackIconKind)Enum
.Parse(typeof(MaterialDesignThemes.Wpf.PackIconKind), "About");