gpt4 book ai didi

c# - 循环遍历 Silverlight DataGrid 中的行

转载 作者:行者123 更新时间:2023-11-30 17:19:44 25 4
gpt4 key购买 nike

我觉得我在这里遗漏了一些明显的东西,但我找不到一种方法来遍历 DataGrids DataGridRow 集合。我有一个网格,其中包含我的类(class)集合的项目源。我正在尝试遍历行并突出显示满足特定条件但我一生都看不到的行。

最佳答案

您不想遍历网格。这是老式的 WinForms 思想。 WPF 和 Silverlight 中的网格在重新设计时考虑到了 MVVM;关注点分离。您无需操纵网格,而是直接使用绑定(bind)到网格的对象。所以网格只是成为一个演示问题。它的职责是读取对象并根据这些对象中的数据显示信息。

您要做的是将属性附加到您要绑定(bind)的对象,并根据这些设置为颜色/字体/等设置网格样式。为此,您需要创建一个 IValueConverter。

这是我在 WPF 和 Silverlight 数据网格中的转换器示例:

public class StateToBackgroundColorConverter : IValueConverter
{
#region IValueConverter Members

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null) return Colors.White.ToString();

var state = (State) value;
return state.WebColor;
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}

#endregion
}

在我的 XAML 中,我这样声明:

<UserControl.Resources>
<Converters:StateToBackgroundColorConverter x:Key="stateToBackgroundColorConverter"/>
</UserControl.Resources>

在 XAML 的数据网格声明中,我指定了 DataGridRow 的转换器用法:

 <toolkit:DataGrid.RowStyle>
<Style TargetType="{x:Type toolkit:DataGridRow}">
<Style.Setters>
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="Foreground" Value="{Binding AgentState.SubState, Converter={StaticResource subStateToColorConverter}}" />
<Setter Property="Background" Value="{Binding AgentState.State, Converter={StaticResource stateToBackgroundColorConverter}}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
</Style.Setters>
</Style>
</toolkit:DataGrid.RowStyle>

因此,转换器完成了工作。它读取 State 对象的值(它是我的 AgentState 对象的子对象,网格绑定(bind)到它;它绑定(bind)到 AgentState 对象的集合)。转换器读取状态值并返回表示颜色的字符串表示形式,供网格用于设置行。

希望对您有所帮助。

关于c# - 循环遍历 Silverlight DataGrid 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4645914/

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