Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式更改WPF DataGrid单元格背景(不使用XAML)_C#_Wpf_Wpfdatagrid - Fatal编程技术网

C# 以编程方式更改WPF DataGrid单元格背景(不使用XAML)

C# 以编程方式更改WPF DataGrid单元格背景(不使用XAML),c#,wpf,wpfdatagrid,C#,Wpf,Wpfdatagrid,我知道这个WPF单元背景问题已经讨论过很多次了,但是我看到的所有解决方案都使用xaml(请参阅:) 你可能会想,为什么没有xaml?如果您有静态着色规则,那么Xaml很好,而我没有。(我的应用程序是一个电气解算器,它将突出显示电网运营商定义的某些安全限制之上和之下的值) 嗯,我不能用静态规则给单元格着色(比如如果输入>0.5返回红色) 因为着色规则是由用户在运行时定义的 有没有什么方法可以不使用任何xaml实现单元格样式化 现在我使用的是WPF UI中的windows窗体主机中的windows窗

我知道这个WPF单元背景问题已经讨论过很多次了,但是我看到的所有解决方案都使用xaml(请参阅:)

你可能会想,为什么没有xaml?如果您有静态着色规则,那么Xaml很好,而我没有。(我的应用程序是一个电气解算器,它将突出显示电网运营商定义的某些安全限制之上和之下的值)

嗯,我不能用静态规则给单元格着色(比如如果输入>0.5返回红色) 因为着色规则是由用户在运行时定义的

有没有什么方法可以不使用任何xaml实现单元格样式化

现在我使用的是WPF UI中的windows窗体主机中的windows窗体数据网格(很难看,但很有效),我非常希望使用WPF数据网格,因为它的性能要好得多


非常感谢您的帮助。

这仍然是正确的数据绑定方案,我认为没有理由评估视图的codebehind代码中的任何内容。关键是分色计算及其视觉表现

  • 将颜色切换逻辑封装在行的ViewModel属性中,并在颜色应更改时发出适当的更改通知
  • 创建一个转换器,该转换器采用ViewModel属性类型(即字符串),并从中创建笔刷
  • 使用在2中创建的转换器将单元格内容的背景属性绑定到行的属性

  • 到目前为止你试过什么了吗?是的,我已经完成了链接中建议的“静态”着色设置,这与这里建议的基本相同:,所有这些都很好,但对我来说都是无用的
    Converter
    就是这样做的。您在这方面是否面临任何问题?事实上,在我的案例中,建议的解决方案无法使用的原因是定义规则(转换器)的类必须在设计时添加为资源,并在设计时设置为着色规则,这两个操作都是在xaml中编程的,也许我不明白如何适应这种解决方案我应该写一个我的
    忘记winforms
    类型的答案。但是我现在太忙了,15分钟后我必须离开。如果你等到今晚,我会写一个正确的答案,这个答案不涉及不必要的过程代码内容,并且基于适当的WPF实践和概念,比如
    DataBinding
    DataTriggers
    等等。