显示来自绑定到对象列表的数据网格中的资源的图像

本文关键字:数据网 数据 网格 图像 资源 列表 绑定 对象 显示 | 更新日期: 2023-09-27 18:20:31

我有一个包含几列的数据网格。其中一列是templateColumn,我想在其中显示资源中的图像。这是xaml:

<DataGrid AutoGenerateColumns="False" Height="415" HorizontalAlignment="Left" Margin="0,34,0,0" Name="dgLocalPlugins" VerticalAlignment="Top" Width="806" SelectionMode="Single" AlternatingRowBackground="#CDEBEBEB">
    <DataGrid.Columns>
        <DataGridCheckBoxColumn Header="Enabled" Binding="{Binding Path=Enabled}" />
        <DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" MinWidth="200" />
        <DataGridTextColumn Header="Status" Binding="{Binding Path=Status}" />
        <DataGridTextColumn Header="Version" Binding="{Binding Path=Version}" />
        <DataGridHyperlinkColumn Header="Wiki" Binding="{Binding Path=WikiUrl}" MaxWidth="100" />
        <DataGridTextColumn Header="Author" Binding="{Binding Path=Author}" />
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Image Source="{Binding Path=Upgrade}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

以下是填充数据网格绑定到的对象列表的代码:

foreach (string path in osapdFiles)
{
    if (!string.IsNullOrEmpty(path))
    {
        PluginDescription desc = PluginHelper.Deserialize(path);
        desc.Upgrade = Properties.Resources.upgrade;
        desc.Status = "Stopped";
        desc.Enabled = false;
        pluginList.Add(desc);
    }
}
dgLocalPlugins.ItemsSource = pluginList;

当我调试并在desc.Upgrade设置好之后设置一个断点时,我可以看到那里有一些东西,但图像没有显示在数据网格中。我需要做什么才能显示图像?

显示来自绑定到对象列表的数据网格中的资源的图像

确保PluginDescription类实现INotifyPropertyChanged,以便在设置属性时绑定将更新UI。

如果您已经为PluginDescription类的Upgrade属性正确地实现了INotifyPropertyChanged,那么我想Path本身就不会得到解决。

将第一个PluginDescription的路径放入数据网格外的某个图像中。

  <DataGrid Name="dgLocalPlugins" ... />
  <Image Source="{Binding ElementName=dgLocalPlugins, Path=ItemsSource[0].Upgrade}"/>

并检查此单个图像是否正确加载。如果没有,那么我确信这条路不会得到解决。