WPF DataGrid foreground 绑定问题
初学WPF , 希望对DataGrid 中所属的一个Column名下的值的颜色动态修改
<DataGridTextColumn Header="隐含回购利率(%)" Binding="{Binding ImpRepo, StringFormat={}{0:f4}}" MinWidth="60" IsReadOnly="True" />
但是使用如下语句并没有起作用:
Foreground="{Binding Path=ImpRepo,Converter={StaticResource IRRColorConvert}}"
IRRColorConvert定义在XAML前方:
<UserControl.Resources>
<ResourceDictionary>
<local:IRRColorConvert x:Key="IRRColorConvert"/>
...........
IRRColorConvert代码如下:
class IRRColorConvert : IValueConverter
{
public object Convert(object value, Type typeTarget, object param, CultureInfo culture)
{
double dValue = (double)value;
byte r, g, b = 0;
if (dValue >= 0)
{
if (dValue >= 5)
r = 254;
else
r = (byte)(int)(norlib.Maths.GetValue(new double[] { 0, 5 }, dValue, new double[] { 200, 255 }));
g = 89;
b = 61;
}
else
{
r = 56;
if (dValue <= -30)
g = 150;
else
g = (byte)(int)(norlib.Maths.GetValue(new double[] { -30, 0 }, dValue, new double[] { 150, 255 }));
b = 61;
}
return new SolidColorBrush(Color.FromRgb(r, g, b));
}
public object ConvertBack(object value, Type typeTarget, object param, CultureInfo culture)
{
return "";
}
}
后来才知道 Foreground 不是 DataGridTextColumn 的依赖项属性
关于这些概念请参看如下链接:
http://www.cnblogs.com/axzxs2001/archive/2010/04/25/1719857.html
http://blog.csdn.net/datoumimi/article/details/8033682
解决的办法如下,使用DataGridTemplateColumn+TextBlock 代替DataGridTextColumn
因为TextBlock的Foreground是Dependency Proeprty
可以比较MSDN:
DataGridTextColumn:
TextBlock:
http://msdn.microsoft.com/en-us/library/system.windows.controls.textblock.foreground.aspx
解决代码如下:
<DataGridTemplateColumn Header="隐含回购利率(%)" MinWidth="70" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding ImpRepo, StringFormat={}{0:n2},UpdateSourceTrigger=PropertyChanged}" Foreground="{Binding Path=ImpRepo,Converter={StaticResource IRRColorConvert}}"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
国外对此问题的一些说明:
http://stackoverflow.com/questions/5926849/datagridtextcolumn-how-to-bind-isreadonly
希望可以帮到大家
最新文章
- DragRow-GYF
- Fiddler-2 Fiddler抓包原理
- TableViewCell,TableView,UITableViewCell
- win安装NLTK出现的问题
- 用cryptico.js实现RSA加密(应对cryptico不支持PEM)
- 微信WeixinJSBridge API
- scp 使用
- pyqt 动态显示时间方法例子学习
- 密码算法详解——Simon
- C-最长回文子串(2)
- 微软的权限框架Asp.Net Identity
- 201521123008《Java程序设计》第11周学习总结
- pycharm安装和首次使用
- poj 1279 半平面交核面积
- 在思科模拟器上配置AAA认证
- Ubuntu 16.04 安装 arm-linux-gcc 交叉编译工具
- apache和tomcat的区别和联系
- 虚拟货币ICO是什么意思 看完秒懂
- 网络 --- 3 socket模块 粘包
- CSS样式学习-1
热门文章
- 走入asp.net mvc不归路:[5]Action的返回
- mac系统下为emacs设置中文字体,解决乱码问题
- Material-Animations
- java 调用ant的自己定义task,默认不是build.xml 的一点问题
- python day- 7 进本数据类型的先关知识点 set集合 深浅拷贝
- BZOJ2163: 复杂的大门
- Linux系统(Centos)下安装Java环境配置步骤详述
- js 原型继承和class继承
- YTU 2832: 使用指针访问数组元素--程序填空
- vi编辑器设置行号可见