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");
Другие вопросы по тегам