WPF 应用程序中来自配置 XML 的 Dynamic MaterialDesign PackIconKind

Dynamic MaterialDesign PackIconKind from config XML in WPF application

我正在设计一个 WPF 桌面应用程序,其中 UI 设计完全由配置文件驱动。我有使用 MaterialDesign PackIcons 的 MenuItems。我在每个菜单项的配置文件中提到了 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};

有人可以帮助我告诉我如何通过代码隐藏使用动态图标吗?

谢谢

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

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