Dynami c MaterialDesign PackIconKind из конфигурации XML в приложении WPF - PullRequest
0 голосов
/ 22 марта 2020

Я разрабатываю одно настольное приложение 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};

Может ли кто-нибудь помочь мне, рассказав, как я могу использовать иконку динамического c с помощью кода позади?

Спасибо

1 Ответ

0 голосов
/ 23 марта 2020

Вы можете использовать метод Enum.Parse или Enum.TryParse для преобразования значения string в PackIconKind, например:

var kind = (MaterialDesignThemes.Wpf.PackIconKind)Enum
    .Parse(typeof(MaterialDesignThemes.Wpf.PackIconKind), "About");
...