datagrid问题

belldandysai 2010-08-24 10:45:27
我现在想做的是,datagrid的其中一列数据,类型为字符型,
如果数据中包含“关键字1”这个词(关键字1为我设定好的),
则datagrid显示该列数据的时候把所有“关键字1”颜色设成红色。

我觉得是要用模板列的,里面放textblock,
然后用run来拼textblock内容,但是具体怎么做,没什么思路
请大家给我些提示,谢谢。

...全文
113 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sunpire 2010-08-25
  • 打赏
  • 举报
回复
那就在 DataTemplate 中放一个 ContentPresenter 试试

<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ContentPresenter Content="{Binding XXXXX,Converter={StaticResource stringConverter},ConverterParameter="关键字1" />
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
jv9 2010-08-24
  • 打赏
  • 举报
回复
对数据集合进行判断,只要该数据成员为“关键字1”,对绑定的cell进行字体颜色修改就可以了。
leon0905 2010-08-24
  • 打赏
  • 举报
回复
这里有个自己做的demo,利用converter把特定关键字变色显示,不知道有没有用
Converter

public class mStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string s = (string) value;
string innerString = (string) parameter;
StackPanel sp = new StackPanel();
sp.Orientation = Orientation.Horizontal;
while (s.IndexOf(innerString) > 0)
{
TextBlock tb = new TextBlock();
tb.Text = s.Substring(0, s.IndexOf(innerString));
s = s.Substring(s.IndexOf(innerString));
sp.Children.Add(tb);
tb = new TextBlock();
tb.Text = innerString;
tb.Foreground = Brushes.Red;
s = s.Substring(innerString.Length);
sp.Children.Add(tb);
}
TextBlock t = new TextBlock();
t.Text = s;
sp.Children.Add(t);
return sp;
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new System.NotImplementedException();
}
}

Xaml

<Binding Converter="{StaticResource stringConverter}" ConverterParameter="关键字1" />
Sunpire 2010-08-24
  • 打赏
  • 举报
回复
楼主先试一下实现简化需求的版本: 如果数据中包含“关键字1”这个词,则datagrid显示该数据的时候把单元格的前景色设为红色。
belldandysai 2010-08-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sunpire 的回复:]
应是类似这样

XML code

<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Binding Converter="{StaticResource stringConverter}" ConverterParamete……
[/Quote]

这样貌似不行,
期待更多回复
Sunpire 2010-08-24
  • 打赏
  • 举报
回复
应是类似这样

<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Binding Converter="{StaticResource stringConverter}" ConverterParameter="关键字1" />
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
belldandysai 2010-08-24
  • 打赏
  • 举报
回复
2楼的
你封装的convert返回的是一个stackpanel,
你的xaml code 能写得再详细一点吗?
binding是具体写在那个位置

8,735

社区成员

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

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