gpt4 book ai didi

c# - 每行设置 XAML Datagrid 文本颜色

转载 作者:太空宇宙 更新时间:2023-11-03 11:39:47 24 4
gpt4 key购买 nike

我正在尝试向 XAML 中的数据网格添加验证。

目前,我已经创建了一个方法来检查 3 个文本框的有效输入,如果 false 在数据网格绑定(bind)到的集合中设置一个值,则为 true 或 false。这部分工作正常。

我现在遇到的问题是让它真正起作用。

我已经创建了一个转换器:

 public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
bool isRowValid = ((bool)value);

ConsoleColor validColour = ConsoleColor.Green;
ConsoleColor invalidColour = ConsoleColor.Red;

if (isRowValid)
{
return validColour;
}
else
{
return invalidColour;
}
}

所以当该行无效时显示红色,有效时显示绿色。

验证每一行的方法在行失去焦点时被调用,默认情况下每一行都设置为无效。

我一直在尝试为每一行设置背景

<DataGrid.RowBackground>
<SolidColorBrush Color="{Binding Path=IsRowValid, Converter={StaticResource RowValidConverter}}" />
</DataGrid.RowBackground>

但理想情况下,我希望只调整文本颜色而不调整背景。

我们将不胜感激任何关于如何实现这一点的建议,

谢谢。

最佳答案

如果我正确理解您的问题,那么我认为更简单的方法是在 RowStyle 中为 Validation.HasError 添加触发器

<DataGrid ...>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="TextElement.Foreground" Value="Green"/>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="TextElement.Foreground" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<!--...-->
</DataGrid>

或者,如果您在 ViewModel 中使用名为 IsRowValid 的属性以其他方式控制它,那么您只需将 Trigger 更改为 DataTrigger

<DataTrigger Binding="{Binding IsRowValid}" Value="True">
<Setter Property="TextElement.Foreground" Value="Red"/>
</DataTrigger>

关于c# - 每行设置 XAML Datagrid 文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5079391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com