WPF根据内容更改单元格背景色

最大限度

我在尝试根据结构下方的Unbound字段(具有非简单的后端结构)更改单元格背景颜色时遇到困难。这是示例“复杂”结构:

public class TestTable
{
    public int order { get; set; }
    public TestMember t1 { get; set; }
    public TestMember t2 { get; set; }
    public TestMember t3 { get; set; }
}

public class TestMember
{
    public TestMember(String i)
    {
        value = i;
    }

    public String value { get; set; }

}

这是XAML:

<igDP:XamDataGrid Name="xamDataGrid1">

        <igDP:XamDataGrid.ViewSettings>
            <igDP:GridViewSettings UseNestedPanels="False"/>
        </igDP:XamDataGrid.ViewSettings>

        <igDP:XamDataGrid.FieldSettings>
            <igDP:FieldSettings AllowRecordFiltering="true" FilterLabelIconDropDownType="MultiSelectExcelStyle" 
                                                        AllowEdit="False" AllowFixing="No" AllowSummaries="True"/>
        </igDP:XamDataGrid.FieldSettings>

        <igDP:XamDataGrid.FieldLayoutSettings>
            <igDP:FieldLayoutSettings AutoGenerateFields="False" FilterUIType="LabelIcons" 
                                                              HeaderPrefixAreaDisplayMode="FieldChooserButton" AllowClipboardOperations="All"
                                                              CopyFieldLabelsToClipboard="True" AddNewRecordLocation="OnTopFixed"
                                                              AllowAddNew="False" HighlightAlternateRecords="False" ExpansionIndicatorDisplayMode="Never"
                                          />
        </igDP:XamDataGrid.FieldLayoutSettings>
        <igDP:XamDataGrid.FieldLayouts>
            <igDP:FieldLayout Key="Layout0">
                <igDP:FieldLayout.SortedFields>
                    <igDP:FieldSortDescription  FieldName="order" Direction="Ascending"></igDP:FieldSortDescription>
                </igDP:FieldLayout.SortedFields>
                <igDP:FieldLayout.Fields>
                    <igDP:Field Name="order" Label="Ordinamento" AllowGroupBy="False"  Visibility="Collapsed" FixedLocation="FixedToNearEdge"/>
                    <igDP:UnboundField BindingMode="TwoWay" BindingPath="t1.value" Name="value" AllowEdit="True" Label="Anno Recoil" AllowGroupBy="False"  FixedLocation="FixedToNearEdge"/>
                    <igDP:UnboundField BindingMode="TwoWay" BindingPath="t2.value" Name="value" AllowEdit="True" Label="APC"  FixedLocation="FixedToNearEdge"/>
                    <igDP:UnboundField BindingMode="TwoWay" BindingPath="t3.value" Name="value" Label="R1" AllowEdit="True" FixedLocation="FixedToNearEdge"/>
                </igDP:FieldLayout.Fields>
            </igDP:FieldLayout>
        </igDP:XamDataGrid.FieldLayouts>

    </igDP:XamDataGrid>

我想得到的是一个彩色网格,仅当根值为null时,单元格才为黑色,而叶值为null时,单元格为黑色。 彩色XamDataGrid

所示网格是在第二列行中生成一个新的TestMember并将其值设置为null的结果。我希望他们不要被涂成黑色,并且对待方式有所不同。我已经厌倦了这个转换器:

<igDP:XamDataGrid.Resources>
        <Style TargetType="{x:Type igDP:CellValuePresenter}">
            <Setter Property="Background">
                <Setter.Value>
                    <MultiBinding Converter="{StaticResource BackGroundConverter}">
                        <Binding RelativeSource="{RelativeSource Self}" Path="Value" />
                        <Binding RelativeSource="{RelativeSource Self}" Path="DataContext"/>
                        <Binding RelativeSource="{RelativeSource Self}" />
                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Value" />
                    </MultiBinding>
                </Setter.Value>
            </Setter>
        </Style>
    </igDP:XamDataGrid.Resources>

而且发生的是,当叶子值为null时,传递给多值转换器的CellValuePresenter没有附加字段,因此我找不到一种优雅的方式来检索值在哪个列中为null(通过root为null或leaf为null) ),并创建一种逻辑以适当的方式为单元着色。

在此先感谢您,如果我没有正确解释该问题,请发表评论。

再次感谢。

最大限度

我通过声明一个多绑定转换器而不是像这样的简单样式和不同样式来解决了这个问题:

<Style TargetType="{x:Type igDP:CellValuePresenter}" x:Key="keyX">
            <Setter Property="Background">
                <Setter.Value>
                    <MultiBinding Converter="{StaticResource BackGroundConverter}">
                        <Binding RelativeSource="{RelativeSource Self}" Path="Value" />
                        <Binding RelativeSource="{RelativeSource Self}" Path="DataContext"/>
                        <Binding Source="keyX"/>
                    </MultiBinding>
                </Setter.Value>
            </Setter>
        </Style>

在multivalueconverter内,我根据传递的键进行检查。显然,在XamDataGrid中,您将样式绑定到了相应的字段,如下所示:

<igDP:UnboundField BindingMode="TwoWay" BindingPath="keyX.value" Name="value" AllowEdit="True" Label="Carica VN" FixedLocation="FixedToNearEdge">
      <igDP:Field.Settings>
            <igDP:FieldSettings CellValuePresenterStyle="{StaticResource keyX}" />
      </igDP:Field.Settings>
</igDP:UnboundField>

并在MultiValueConverter中根据第三个绑定进行切换:

switch (columnValue)
{
                    case "keyX":
                        single = row.getKeyXValue();
                        colorToApply = getStandardColor(single);
                        break;
 ...

就这样。对我来说似乎很肮脏,但是由于我还没有找到一个优雅的解决方案,所以这可以工作

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将WPF Datagrid单元格背景色与触发器绑定

来自分类Dev

更改了datagridview单元格背景色

来自分类Dev

jQuery-OnClick,始终在单击时更改表格单元格的背景色

来自分类Dev

在编辑模式下更改单元格背景色

来自分类Dev

如何根据单元格值更改DataGrid单元格背景色

来自分类Dev

PHPExcel根据单元格值设置字体/背景色

来自分类Dev

在虚拟模式下更改“ DataGridView”的单元格背景色

来自分类Dev

设置DataGrid单元格背景色WPF

来自分类Dev

在DataGridView上更改单元格背景色CellMouseClick

来自分类Dev

从MySQL读取值后,如何使用PHP根据其内容设置单元格背景色?

来自分类Dev

全日历更改日期单元格背景色,不仅更改事件背景色

来自分类Dev

如何根据单元格值更改行背景色

来自分类Dev

WPF:在运行时动态更改DataGrid单元格/行背景色

来自分类Dev

C#在TableLayoutPanel中更改表格单元格的背景色

来自分类Dev

使用JavaScript根据JSON值更改表格单元格背景色

来自分类Dev

更改值后,使用代理模型更改QTableView的单元格背景色

来自分类Dev

如何在SwiftUI和iOS 14中更改单元格背景色?

来自分类Dev

单击更改单元格背景色

来自分类Dev

双击单元格如何更改背景色?

来自分类Dev

在虚拟模式下更改“ DataGridView”的单元格背景色

来自分类Dev

重复单元格背景色

来自分类Dev

在DataGridViewButtonColumn的单元格中更改按钮的背景色

来自分类Dev

wpf datagrid单元格背景色未完全填充

来自分类Dev

Excel:将单元格的背景色更改为在该单元格中写入的RGB颜色

来自分类Dev

jTable单元格背景色

来自分类Dev

如何根据单元格值更改行背景色

来自分类Dev

WPF根据内容更改单元格背景色

来自分类Dev

如何根据项目值更改列表视图项目的单元格(背景色或前景色)的颜色

来自分类Dev

根据另一个单元格的背景色设置单元格的背景色

Related 相关文章

  1. 1

    将WPF Datagrid单元格背景色与触发器绑定

  2. 2

    更改了datagridview单元格背景色

  3. 3

    jQuery-OnClick,始终在单击时更改表格单元格的背景色

  4. 4

    在编辑模式下更改单元格背景色

  5. 5

    如何根据单元格值更改DataGrid单元格背景色

  6. 6

    PHPExcel根据单元格值设置字体/背景色

  7. 7

    在虚拟模式下更改“ DataGridView”的单元格背景色

  8. 8

    设置DataGrid单元格背景色WPF

  9. 9

    在DataGridView上更改单元格背景色CellMouseClick

  10. 10

    从MySQL读取值后,如何使用PHP根据其内容设置单元格背景色?

  11. 11

    全日历更改日期单元格背景色,不仅更改事件背景色

  12. 12

    如何根据单元格值更改行背景色

  13. 13

    WPF:在运行时动态更改DataGrid单元格/行背景色

  14. 14

    C#在TableLayoutPanel中更改表格单元格的背景色

  15. 15

    使用JavaScript根据JSON值更改表格单元格背景色

  16. 16

    更改值后,使用代理模型更改QTableView的单元格背景色

  17. 17

    如何在SwiftUI和iOS 14中更改单元格背景色?

  18. 18

    单击更改单元格背景色

  19. 19

    双击单元格如何更改背景色?

  20. 20

    在虚拟模式下更改“ DataGridView”的单元格背景色

  21. 21

    重复单元格背景色

  22. 22

    在DataGridViewButtonColumn的单元格中更改按钮的背景色

  23. 23

    wpf datagrid单元格背景色未完全填充

  24. 24

    Excel:将单元格的背景色更改为在该单元格中写入的RGB颜色

  25. 25

    jTable单元格背景色

  26. 26

    如何根据单元格值更改行背景色

  27. 27

    WPF根据内容更改单元格背景色

  28. 28

    如何根据项目值更改列表视图项目的单元格(背景色或前景色)的颜色

  29. 29

    根据另一个单元格的背景色设置单元格的背景色

热门标签

归档