【问题标题】:VB.net XAML datagrid cell colour change based on valueVB.net XAML datagrid 单元格颜色根据值变化
【发布时间】:2017-05-20 18:43:34
【问题描述】:

我的 XAML 代码:

<Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Datagrid_Binding"
        mc:Ignorable="d"
        Title="MainWindow" Height="8517" Width="1244">
    <Grid>
        <DataGrid x:Name="WaterfallDataGrid" CanUserSortColumns="False" ColumnWidth="60" AutoGenerateColumns="False">



            <DataGrid.Columns>
                <DataGridTextColumn Header="Load" Binding="{Binding Load}"></DataGridTextColumn>
                <DataGridTextColumn Header="PF" Binding="{Binding PF}"></DataGridTextColumn>
                <DataGridTextColumn Header="Spare" Binding="{Binding Spare}"></DataGridTextColumn>
            </DataGrid.Columns>

            <DataGridTextColumn Binding="{Binding Load}">
                <DataGridTextColumn.ElementStyle>
                    <Style TargetType="{x:Type TextBlock}">
                        <Style.Triggers>
                            <Trigger Property="Text" Value="Full Load">
                                <Setter Property="Background" Value="LightGreen"/>
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </DataGridTextColumn.ElementStyle>
            </DataGridTextColumn>


        </DataGrid>
    </Grid>
</Window>

我的 VB.net 代码。

Class MainWindow
    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        Dim dt3 As New DataTable("Waterfall")

        dt3.Columns.Add("Load")
        dt3.Columns.Add("PF")
        dt3.Columns.Add("Spare")
        'dt3.rows.add(New Object() {"full load", "0.8", "20%"})
        dt3.Rows.Add("full load", "0.8", "20%")
        WaterfallDataGrid.ItemsSource = dt3.DefaultView

    End Sub
End Class

我想要做的是当单元格具有“满载”文本时,它会改变其单元格颜色。我在运行时收到一条错误消息,提示“在使用 ItemsSource 之前,Items 集合必须为空。”对此非常不解。一些帮助表示赞赏。

【问题讨论】:

    标签: vb.net xaml colors datagrid cell


    【解决方案1】:

    问题是你定义了同一列两次。

    <Window x:Class="MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
            <Grid>
                <DataGrid x:Name="WaterfallDataGrid" CanUserSortColumns="False" ColumnWidth="60" AutoGenerateColumns="False">
                    <DataGrid.Columns>
                        <DataGridTextColumn Header="Load" Binding="{Binding Load}">
                            <DataGridTextColumn.ElementStyle>
                                <Style TargetType="{x:Type TextBlock}">
                                        <Style.Triggers>
                                        <Trigger Property="Text" Value="full load">
                                            <Setter Property="Background" Value="LightGreen"/>
                                        </Trigger>
                                    </Style.Triggers>
                                </Style>
                            </DataGridTextColumn.ElementStyle>
                        </DataGridTextColumn>
                        <DataGridTextColumn Header="PF" Binding="{Binding PF}"></DataGridTextColumn>
                        <DataGridTextColumn Header="Spare" Binding="{Binding Spare}"></DataGridTextColumn>
                    </DataGrid.Columns>
                </DataGrid>
            </Grid>
        </Window>
    

    【讨论】:

    • 不确定这将如何解决我的问题,因为我正在寻找的是如果单元格包含“满载”字样,则单元格会改变颜色...
    • 这是为了避免异常。
    • 忘记 Loaded 事件。问题是您定义列的方式。样式应在列定义下或资源部分中定义。
    • 太棒了 Myriam。非常感谢。
    猜你喜欢
    • 2011-07-29
    • 2013-04-07
    • 1970-01-01
    • 2013-06-10
    • 2021-09-20
    • 2020-06-02
    • 2016-12-12
    相关资源
    最近更新 更多