显示来自绑定到对象列表的数据网格中的资源的图像
本文关键字:数据网 数据 网格 图像 资源 列表 绑定 对象 显示 | 更新日期: 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}"/>
并检查此单个图像是否正确加载。如果没有,那么我确信这条路不会得到解决。