You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Avalonia MVVM项目中Material Icons无法显示问题求助

解决Avalonia中Material.Icons.Avalonia图标不显示问题

我已为Avalonia MVVM项目安装Material.Icons.Avalonia NuGet包,但在Button组件中嵌入MaterialIcon时,按钮上未呈现任何图标,仅显示空白按钮。

问题代码

MainWindow.axaml

<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="using:SharpDesktop.ViewModels"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:materialIcons="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia"
        mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
        x:Class="SharpDesktop.Views.MainWindow"
        x:DataType="vm:MainWindowViewModel"
        Icon="/Assets/avalonia-logo.ico"
        Title="SharpDesktop"
        WindowStartupLocation="CenterScreen"
        ExtendClientAreaToDecorationsHint="True"
        ExtendClientAreaChromeHints="NoChrome"
        ExtendClientAreaTitleBarHeightHint="-1">

    <Design.DataContext>
        <!-- This only sets the DataContext for the previewer in an IDE,
             to set the actual DataContext for runtime, set the DataContext property in code (look at App.axaml.cs) -->
        <vm:MainWindowViewModel/>
    </Design.DataContext>

    <!--内容区域-->
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <!-- 标题栏 -->
        <Border Grid.Row="0"
            Height="60"
            Background="Pink"
            x:Name="TitleBar"
            Padding="16"
            >
            <DockPanel LastChildFill="False">
                <DockPanel Dock="Right">
                    <StackPanel Orientation="Horizontal">
                        <Button>
                            <materialIcons:MaterialIcon Kind="ExitRun"/>
                        </Button>
                    </StackPanel>
                </DockPanel>
            </DockPanel>
        </Border>

        <!-- 内容区域 -->
        <Border Grid.Row="1">
            
        </Border>
    </Grid>

</Window>

App.axaml

<Application xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             x:Class="SharpDesktop.App"
             xmlns:local="using:SharpDesktop"
             xmlns:themes="clr-namespace:Material.Styles.Themes;assembly=Material.Styles"
             xmlns:dialogHost="clr-namespace:DialogHostAvalonia;assembly=DialogHost.Avalonia"
             xmlns:materialIcons="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia"
             RequestedThemeVariant="Default">
    <!-- "Default" ThemeVariant follows system theme variant. "Dark" or "Light" are other available options. -->

    <Application.DataTemplates>
        <local:ViewLocator/>
    </Application.DataTemplates>

    <Application.Styles>
        <themes:MaterialTheme BaseTheme="Dark" PrimaryColor="Purple" SecondaryColor="Lime"/>
        <materialIcons:MaterialIconStyles/>
        <materialIcons:MaterialIconExt/>
    </Application.Styles>
</Application>

解决方法

  • 确认图标Kind枚举值正确性:检查ExitRun是否为Material.Icons.Avalonia支持的图标名称。部分图标名称可能存在拼写或命名差异,比如常见的退出图标应为ExitToApp,可通过IDE智能提示或官方文档核对枚举列表。
  • 调整按钮与图标尺寸:默认Button的内边距可能过大,或图标尺寸太小导致无法显示。尝试给Button设置Padding="0",同时为MaterialIcon指定明确的宽高:
<Button Padding="0" Width="32" Height="32">
    <materialIcons:MaterialIcon Kind="ExitToApp" Width="20" Height="20"/>
</Button>
  • 优化样式加载配置:移除App.axaml中的MaterialIconExt,部分版本中该扩展样式可能与现有主题冲突,仅保留MaterialIconStyles即可:
<Application.Styles>
    <themes:MaterialTheme BaseTheme="Dark" PrimaryColor="Purple" SecondaryColor="Lime"/>
    <materialIcons:MaterialIconStyles/>
</Application.Styles>
  • 验证NuGet版本兼容性:确保Material.Icons.Avalonia的版本与项目使用的Avalonia版本匹配。例如Avalonia 11.x需要对应版本的图标库版本,版本不兼容会导致渲染失败。
  • 清理重建项目:清理解决方案(Clean Solution)后重新生成(Rebuild Solution),或重启IDE,避免缓存导致资源未正确加载。

内容的提问来源于stack exchange,提问作者Furry_Monster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 20:24:53