Powershell WPF 处理单行颜色
Powershell WPF handle single row colors
我正在尝试改编我的脚本,它只显示一个简单的 WPF 数据网格。
它有 4 列,如果其内容符合条件,我需要在几行上设置颜色(例如,要检查的单元格以这种格式获取日期时间:'dd/mm/aaaa hh:mm:ss')
这是这样添加我的行的方式:
$myDatagrid.AddChild([pscustomobject]@{Column0=$Value0;Column1=$Value1;Column2=$Value2;Column3=$Value3})
现在在添加它之前检查其中一个值,如果条件满足,我想设置一种颜色。
当我在 winforms 下使用它时,我会这样做:
$myDatagrid.Rows[$rownumber].DefaultCellStyle.BackColor = "#DCDCDC"
WPF 中是否有类似的东西允许我选择一条线并设置其颜色?
###############我试过的:####################
我读过关于可以拦截单元格创建事件并且我可以在其中设置颜色的信息,结果只是一个令人头疼的问题,因为我发现的都是在 C# 中。
这是一个旋转表格的小脚本,仅此而已,我真的不想为它学习一门全新的语言。
我试过绑定:
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding Column1}" Value="True">
<Setter Property="Background" Value="White"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Column1}" Value="False">
<Setter Property="Background" Value="#8e8f94"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
我确实在存储 true/false 值的单元格上进行了测试,但我不知道如何在包含日期 'dd/mm/aaaa hh:mm:ss' 的单元格上进行测试
现在,如果我可以在代码中设置颜色,那么就像填充单元格之前一样简单,我有一个 DateTime,这更容易处理。
我确实花了很多时间浏览上面的 Microsoft 文档并在发帖前寻找其他答案,实际上我在几十篇文章和文档中发现的信息很少。
有没有更好的方法来抓取文档或其他人都遇到同样的问题?
编辑:我正在阅读有关 DataGridRow 的信息,如何从 datagrid 获取 datagridrow?
好吧...花了我足够长的时间,但我做到了。
我知道,这很丑陋,但它确实有效。
如果有人感兴趣,你可以从中着手。
$myDatagridRowArray= @() #Creating a rows array
foreach($row in $dataset.tables[0].Rows) #Cycle rows from a dataset table
{
$myDatagridRowItem = new-object myRowClass
$myDatagridRow = New-Object System.Windows.Controls.DataGridRow
$myDatagridRow.item = $myDatagridRowItem
$myDatagridRowItem.Column1 = $Row[1]
$myDatagridRowItem.Column2 = $Row[2]
$myDatagridRowItem.Column3 = $Row[3]
$myDatagridRowItem.Column4 = $Row[4]
if ( some conditionsomething )
{
$myDatagridRow.background = '#8e8fff'
}
$myDatagridRowArray += $myDatagridRow
}
$i = 0
foreach ($row in $myDatagridRowArray){
$Datagrid.AddChild($myDatagridRowArray[$i])
$i++
}
我只是遇到了一个问题,因为排序不再有效,现在正在处理...(这条线和实际手动排序网格都没有)
$Datagrid.Items.SortDescriptions.Add([System.ComponentModel.SortDescription]@{PropertyName="Column1"; Direction="Ascending"})
我正在尝试改编我的脚本,它只显示一个简单的 WPF 数据网格。
它有 4 列,如果其内容符合条件,我需要在几行上设置颜色(例如,要检查的单元格以这种格式获取日期时间:'dd/mm/aaaa hh:mm:ss')
这是这样添加我的行的方式:
$myDatagrid.AddChild([pscustomobject]@{Column0=$Value0;Column1=$Value1;Column2=$Value2;Column3=$Value3})
现在在添加它之前检查其中一个值,如果条件满足,我想设置一种颜色。
当我在 winforms 下使用它时,我会这样做:
$myDatagrid.Rows[$rownumber].DefaultCellStyle.BackColor = "#DCDCDC"
WPF 中是否有类似的东西允许我选择一条线并设置其颜色?
###############我试过的:####################
我读过关于可以拦截单元格创建事件并且我可以在其中设置颜色的信息,结果只是一个令人头疼的问题,因为我发现的都是在 C# 中。 这是一个旋转表格的小脚本,仅此而已,我真的不想为它学习一门全新的语言。
我试过绑定:
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding Column1}" Value="True">
<Setter Property="Background" Value="White"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Column1}" Value="False">
<Setter Property="Background" Value="#8e8f94"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
我确实在存储 true/false 值的单元格上进行了测试,但我不知道如何在包含日期 'dd/mm/aaaa hh:mm:ss' 的单元格上进行测试 现在,如果我可以在代码中设置颜色,那么就像填充单元格之前一样简单,我有一个 DateTime,这更容易处理。
我确实花了很多时间浏览上面的 Microsoft 文档并在发帖前寻找其他答案,实际上我在几十篇文章和文档中发现的信息很少。 有没有更好的方法来抓取文档或其他人都遇到同样的问题?
编辑:我正在阅读有关 DataGridRow 的信息,如何从 datagrid 获取 datagridrow?
好吧...花了我足够长的时间,但我做到了。 我知道,这很丑陋,但它确实有效。 如果有人感兴趣,你可以从中着手。
$myDatagridRowArray= @() #Creating a rows array
foreach($row in $dataset.tables[0].Rows) #Cycle rows from a dataset table
{
$myDatagridRowItem = new-object myRowClass
$myDatagridRow = New-Object System.Windows.Controls.DataGridRow
$myDatagridRow.item = $myDatagridRowItem
$myDatagridRowItem.Column1 = $Row[1]
$myDatagridRowItem.Column2 = $Row[2]
$myDatagridRowItem.Column3 = $Row[3]
$myDatagridRowItem.Column4 = $Row[4]
if ( some conditionsomething )
{
$myDatagridRow.background = '#8e8fff'
}
$myDatagridRowArray += $myDatagridRow
}
$i = 0
foreach ($row in $myDatagridRowArray){
$Datagrid.AddChild($myDatagridRowArray[$i])
$i++
}
我只是遇到了一个问题,因为排序不再有效,现在正在处理...(这条线和实际手动排序网格都没有)
$Datagrid.Items.SortDescriptions.Add([System.ComponentModel.SortDescription]@{PropertyName="Column1"; Direction="Ascending"})