【发布时间】:2012-01-09 16:50:23
【问题描述】:
我正在尝试在我拥有的一些DataGrids 中添加一些样式。
我目前正在开发一个应用程序,该应用程序旨在显示大量财务数据(数字矩阵),并使用许多可视化工具来检测好数据、错误数据......并在需要时通过将它们与目标值进行比较来纠正它们
现在,我有一个颜色代码,基本上是:
- 白色背景:当前值很好
- 红色背景:当前值低于目标值!
- 绿色背景:当前值高于目标值!
如果有点接近良好的价值,我会使用透明度来设置背景清晰,否则强烈。
现在我想添加另一个可视化工具:某种可视化模式,以通知用户此值是正确还是错误,但存在潜在风险(正如我之前所说,它是财务数据,所以它是主要衡量金钱损失风险)。
当前的应用程序是用 VBA 编写的,它使用了一种技巧,即在单元格中添加一个空注释,这样一角就会出现一个红色的小三角形。
我想找到一种方法将它添加到我的 XAML 样式中,我想出的最好的方法是添加视觉模式。
这是我想要达到的目标的示例:
在左栏中,您可以看到“正常显示”。 在右边,我添加了“danger-styles”,它的意思应该是“警告,这个值有问题”。 第一行显示了在 Excel 上执行此操作的旧方法:使用虚假注释,在右上角添加一个红色三角形。
您对如何实现这一目标有任何想法吗? Adorner 能解决问题吗?
顺便说一句,网格是可编辑的,所以我显然不想放弃可编辑的方面,所以这让我怀疑可能Adorner...
这是当前的 XAML Style,它被应用为 CellStyle:
<Style x:Key="DynamicCellStyle" TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="#FF316AC5" />
</Trigger>
<Trigger Property="IsSelected" Value="False">
<Setter Property="Background">
<Setter.Value>
<MultiBinding Converter="{StaticResource CellToColorConverter}">
<!-- Some bindings for the converter to compute the actual color -->
</MultiBinding>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Grid Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
这里有什么想法吗?
非常感谢!
【问题讨论】: