请教一个DataGrid的使用问题

siaosa 2010-07-22 03:58:47
有一个DataGrid是这样定义的
<sdk:DataGrid ................>
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn x:Name="codeColumn" Binding="{Binding Path=code}" Header="Code" Width="SizeToHeader" />
....
</sdk:DataGrid>

我想让codeColumn这一列,当code字段的值为1时,显示成A.jpg,
当code字段的值为2时,显示B.jpg
......
这应该怎么做呀?
...全文
199 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
siaosa 2010-07-22
  • 打赏
  • 举报
回复
找到原因了,是没有注册资源的问题
还要在在Application.Resources里注册这个Converter

谢谢大家
Sunpire 2010-07-22
  • 打赏
  • 举报
回复
LZ,看了你的代码。
1. 要学会设置断点调试,而不是用
HtmlWindow html = HtmlPage.Window;
html.Alert("ddddd");

2. 这个Converter是要返回给 Image.Source 所用的值,这个值的类型是 System.Windows.Media.ImageSource ,所以,应返回

if ((Boolean)value)
return new System.Windows.Media.BitmapImage(new Uri(IMG_PATH + "True.png");
else
return new System.Windows.Media.BitmapImage(new Uri(IMG_PATH + "Flash.png");

其中, new Uri() 还有一个 UriKind 参数,忘了LZ给出的那种格式是 UriKind.Relative 还是 UriKind.Absolute 了
siaosa 2010-07-22
  • 打赏
  • 举报
回复
<sdk:DataGridTemplateColumn x:Name="fExistsAttachmentColumn" Header="A" Width="SizeToHeader">

<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Width="5" Height="5" Source="{Binding fExistsAttachment, Converter={StaticResource AttIconConverter}}" ></Image>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>

我这样写怎么不对呀?
fExistAttachment是字段名
AttIconConverter是这样定义的
public class AttIconConverter : IValueConverter
{
private const string IMG_PATH = @"/CleverSoft.UI.SLControls;component/PageFrame/Images/";

public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
HtmlWindow html = HtmlPage.Window;
html.Alert("ddddd");

if ((Boolean)value)
return IMG_PATH + "True.png";
else
return IMG_PATH + "Flash.png";

}

public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new System.NotImplementedException();
}
}
可是还报错,不知道是怎么回事
sjyanxin 2010-07-22
  • 打赏
  • 举报
回复
同意三楼的
siaosa 2010-07-22
  • 打赏
  • 举报
回复
sjyanxin
code这个字段并不是图片呀, 我的程序要求是根据code的值显示某张图片
Sunpire 2010-07-22
  • 打赏
  • 举报
回复
正规思想,有两方面要掌握:
1. 掌握 IValueConverter ,实现 1 -> A.jpg 的Uri转换。
2. 掌握 DataGridTemplateColumn ,codeColumn 要改为 DataGridTemplateColumn ,在里面放上 Image 控件,Image.Source属性 直接绑定code,并使用上述的 IValueConverter 。

正规思想二(非推荐)
1. 为数据源 Model 增加一个 ImageSource 属性, code为1时,ImageSource 指向 A.jpg 的Uri
2. 也是使用 DataGridTemplateColumn ,里面的 Image 控件的 Source属性 直接绑定至Mode中的ImageSource

非正规思想
处理 DataGrid.LoadingRow 事件
sjyanxin 2010-07-22
  • 打赏
  • 举报
回复
使用模板吧

<data:DataGrid>
<data:DataGrid.Columns>
<data:DataGridTemplateColumn >
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding code}" ></Image>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
</data:DataGrid.Columns>
</data:DataGrid>

8,736

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧