首页 > 解决方案 > 资源图像未显示 WPF

问题描述

我有 3 张 .png 图片,我想将它们添加到网格上(简单地说)我的 2 张图片正确显示,但第一个不是,我不知道为什么:

这是所有 3 张图片的 app.xaml 行:

    <BitmapImage x:Key="EditIcon" UriSource="Ressources\EdtIcon.png"/>
    <BitmapImage x:Key="DeleteIcon" UriSource="Ressources\DltIcon.png"/>
    <BitmapImage x:Key="InterroIcon" UriSource="Ressources\InterroIcon.png"/>

这是我将它们中的 3 个放入网格的方式:

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Ellipse Width="20" Height="20" VerticalAlignment="top"  Margin="0,0,0,0" HorizontalAlignment="Center" MouseLeftButtonUp="ButtonComparerCorrection_Click">
                <Ellipse.Fill>
                    <ImageBrush ImageSource="{Binding InterroIcon}"/>
                </Ellipse.Fill>
            </Ellipse>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Ellipse Width="20" Height="20" VerticalAlignment="Top" Margin="0,0,0,0" HorizontalAlignment="Stretch" MouseLeftButtonUp="ButtonDeleteRow_Click">
                <Ellipse.Fill>
                    <ImageBrush ImageSource="{Binding DeleteIcon}"/>
                </Ellipse.Fill>
            </Ellipse>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Ellipse Width="20" Height="20" VerticalAlignment="top"  Margin="1,0,0,1" HorizontalAlignment="Stretch" MouseLeftButtonUp="ButtonEditRow_Click">
                <Ellipse.Fill>
                    <ImageBrush ImageSource="{Binding EditIcon}"/>
                </Ellipse.Fill>
            </Ellipse>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

唯一没有显示的图像是第一个:InterroIcon 我检查了 png 文件的名称,它也是 InterroIcon

在互联网上检查后,我验证了生成操作是“资源”,并且副本设置为“如果较新”,通常这就是解决问题的方法,但在我的情况下不是

这个问题的原因可能是什么?

感谢您抽出宝贵时间

标签: wpfxaml

解决方案


{Binding InterroIcon}如果DataContext 中有与类型InterroIcon兼容的属性,则将起作用。ImageSource

既然你已经声明了图片资源,那么使用它们更有意义(没有绑定错误,并且图片资源不属于 MVVM 架构中的 DataContext ):

<ImageBrush ImageSource="{StaticResource InterroIcon}"/>

<ImageBrush ImageSource="{StaticResource DeleteIcon}"/>

<ImageBrush ImageSource="{StaticResource EditIcon}"/>

推荐阅读