首页 > 解决方案 > WPF 应用程序中配置 XML 的动态 MaterialDesign PackIconKind

问题描述

我正在设计一个 WPF 桌面应用程序,其中 UI 设计完全由配置文件驱动。我有使用 MaterialDesign PackIcons 的 MenuItems。我在每个菜单项的配置文件中都提到了 PackIcons。例如

<MenuItem Name="Menu1">
    ....
    <Icon Type="MaterialDesign">NewBox</Icon>
</MenuItem>
<MenuItem Name="Menu2">
    ....
    <Icon Type="MaterialDesign">ExitToApp</Icon>
</MenuItem>

现在我想在设计 MenuItems 时使用这个图标名称。在 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#wpfmaterial-design-icons

解决方案


您可以使用Enum.ParseorEnum.TryParse方法将string值转换为 a PackIconKind,例如:

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

推荐阅读