c# - 图像在 wpf 的 Gridview 中不可见
问题描述
我正在尝试在列表视图数据项中显示图像以及数据。我能够在列表视图中看到文本项,但看不到图像。我正在将图像与图像文件路径绑定。相同的图像路径在外部工作正常在同一页面中的列表视图。但是在列表视图中它没有显示图像。但是在列表视图中可以看到图像控件周围的边框(黄色)。请帮助找到解决方案
<
ListView Name="lvUsers" Grid.Column="1" Grid.Row="1" Margin="0,5,0,0" Height="Auto"
Background="{x:Null}" BorderBrush="{x:Null}"
ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto"
VirtualizingStackPanel.IsVirtualizing="True" ScrollViewer.CanContentScroll="True"
SelectionMode="Single" IsSynchronizedWithCurrentItem="True"
IsEnabled="True">
<ListView.View >
<GridView >
<GridViewColumn Width="50" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<Border Width="30" Height="30" Background="Yellow" >
<Image Width="10" Height="10" Stretch="Fill" Source="{Binding Path=DisplayedImage, Mode=Default}" HorizontalAlignment="Center" Margin="0,0,0,0" />
</Border>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="120" DisplayMemberBinding="{Binding EmpName}">
<GridViewColumn.Header>
<GridViewColumnHeader Tag="EmpName" Click="lvUsersColumnHeader_Click">Name</GridViewColumnHeader>
</GridViewColumn.Header>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
<Border Width="30" Height="30" CornerRadius="10,10,10,10 " >
<Image x:Name="Avatar" Source="{Binding Path=DisplayedImage, Mode=Default}" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,0,0,0" />
</Border>
</Grid>
</UserControl>
我的代码如下:命名空间和页面初始化代码:
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Media;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Configuration;
using System.Data;
using System.Windows.Input;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
public ProjectTracker()
{
InitializeComponent();
List<DataTable> items = new List<DataTable>();
items.Add(loademp());
lvUsers.ItemsSource = loademp().DefaultView;
DataContext = new MainSideBar_viewModel();
}
用于图像源绑定的视图模型中的对象:
public string DisplayedImage
{
get { return @"C:\faisal\Xerox2014\wpf\gsktid\P11376fs2.JPG"; }
}
解决方案
您可以使用 aRelativeSource
从以下内容绑定到视图模型的属性CellTemplate
:
<GridViewColumn Width="50" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<Border Width="30" Height="30" Background="Yellow" >
<Image Width="10" Height="10" Stretch="Fill"
Source="{Binding Path=DataContext.DisplayedImage, RelativeSource={RelativeSource AncestorType=ListView}}"
HorizontalAlignment="Center" Margin="0,0,0,0" />
</Border>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
的默认值DataContext
是 中的Image
一个项目,ItemsSource
而这个项目显然没有DisplayedImage
属性。
推荐阅读
- python - 如何格式化csv表格?
- php - 通过 setter 方法进行依赖注入
- python - 在没有非 python 依赖的情况下将 PDF 转换为图像
- statistics - 如果一枚不公平的硬币翻转了 8 次。第一次和最后一次都为正面时,6 次正面朝上的概率是多少?
- apache - symfony 4 的重定向太多
- javascript - 为什么单击仅调用 API 端点然后导航到正确页面的 next.js `Link` 时,我会在半秒内收到 404?
- javascript - 在 JavaScript 中合并时,jQuery 对话框未打开
- javascript - 导航到没有 react-router 的 URL -“_this.props.history is undefined”错误
- reactjs - React with Material UI 模板中索引的某些图标
- python - 如何将带有特殊字符的文件名从磁盘读取到 FileField 中?