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
希望可以帮到大家
WPF DataGrid foreground 绑定问题的更多相关文章
- (WPF) DataGrid之绑定
通过ObservableCollection 绑定到 DataGrid. 1. 前台Xaml. <DataGrid x:Name="dgMeasurements" Horiz ...
- WPF DataGrid某列使用多绑定后该列排序失效,列上加入 SortMemberPath 设置即可.
WPF DataGrid某列使用多绑定后该列排序失效 2011-07-14 10:59hdongq | 浏览 1031 次 悬赏:20 在wpf的datagrid中某一列使用了多绑定,但是该列排序失 ...
- WPF DataGrid绑定一个组合列
WPF DataGrid绑定一个组合列 前台: <Page.Resources> <local:InfoConverter x:Key="converter& ...
- WPF DataGrid 绑定行双击行命令
WPF DataGrid 绑定行双击行命令 <DataGrid ...> <DataGrid.InputBindings> <MouseBinding MouseActi ...
- WPF dataGrid下的ComboBox的绑定
WPF dataGrid下的ComboBox的绑定 Wpf中dataGrid中的某列是comboBox解决这个问题费了不少时间,不废话了直接上代码 xaml 代码 <DataGridTempla ...
- WPF DataGrid 双击行 获得绑定数据
原文:WPF DataGrid 双击行 获得绑定数据 1)增加事件 2)增加对象获取 1)事件代码 Datagrid 增加事件 MouseDoubleClick="dataGrid_Mous ...
- WPF Datagrid 动态生成列 并绑定数据
原文:WPF Datagrid 动态生成列 并绑定数据 说的是这里 因为列头是动态加载的 (后台for循环 一会能看到代码) 数据来源于左侧列 左侧列数据源 当然num1 属于临时的dome使用 可 ...
- WPF DataGrid 绑定数据及时更新的处理
原文:WPF DataGrid 绑定数据及时更新的处理 默认情况下datagrid 绑定数据源后,在界面编辑某一列后,数据不会及时更新到内存对象中.如在同一行上有一个命令对来获取 当前选中行(内存对象 ...
- WPF DATAGrid 空白列 后台绑定列 处理
原文:WPF DATAGrid 空白列 后台绑定列 处理 AutoGenerateColumns <DataGrid x:Name="dataGrid" Margin=&qu ...
随机推荐
- 区间DP与贪心算法的联系(uav Cutting Sticks && poj Fence Repair(堆的手工实现))
由于,这两题有着似乎一样的解法所以将其放在一起总结比較,以达到更好的区分二者的差别所在. 一.区间DP uva的Cutting Sticks是一道典型的模板题. 题目描写叙述: 有一根长度为l的木棍, ...
- 多线程网页爬虫 python 实现
采用了多线程和锁机制,实现了广度优先算法的网页爬虫. 对于一个网络爬虫,如果要按广度遍历的方式下载,它就是这样干活的: 1.从给定的入口网址把第一个网页下载下来 2.从 ...
- PHP将当前目录列出来
$d=dir("."); echo $d->path; while(false !== ($e = $d->read())) { echo "<a hr ...
- C指针——C语言手记
近期敲代码的时候.发现自己非常多东西都開始忘了. 今天最终有机会好好总结一下指针.当做个笔记同一时候也希望对大家实用.假设有不对的地方.希望大家能帮我指正一下.然后我的实验环境是32位RHEL+ecl ...
- DesiredSize,RenderSize&& Width ,ActualWidth
做UI的时候刚入门,很多属性摸不着头脑,需要的功能和属性不能很快联系联想到,所以要慢慢积累UIElement 的DesiredSize 和 RenderSize UIElement 的DesiredS ...
- Django-权限信息初始化
数据库 from django.db import models class Menu(models.Model): """ 菜单组: """ ...
- lonlifeOJ1152 “玲珑杯”ACM比赛 Round #19 概率DP
E -- Expected value of the expression DESCRIPTION You are given an expression: A0O1A1O2A2⋯OnAnA0O1A1 ...
- C、C++混合编程之extern "C"
为何要“混合编程”?举个例子: CHeader.h #ifndef C_HEADER_H #define C_HEADER_H void func(); #endif CHeader.c #inclu ...
- 处理TCP连包的一小段代码
学习网络编程也有一段时间了,一直听说TCP数据会连包,但一直不知道怎么测试好.最近测试了下:发送方使用对列,将发送的数据存入队列,然后开线程,专门发送.发送多包数据之间不延时.在接收方,他们确实连在一 ...
- 应用程序启动器 “sublime_text.desktop“ 还没有被标记为 信任。如果您不知道这个文件的来源,那么启动它可能会不安全。解决sublime在ubuntu中不支持中文输入问题。
1.下载 git clone https://github.com/lyfeyaj/sublime-text-imfix.git 2.进行一些处理 cd ~/sublime-text-imfix su ...