Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Silverlight数据网格中循环行_C#_.net_Silverlight_Silverlight 4.0 - Fatal编程技术网

C# 在Silverlight数据网格中循环行

C# 在Silverlight数据网格中循环行,c#,.net,silverlight,silverlight-4.0,C#,.net,Silverlight,Silverlight 4.0,我有一种感觉,我在这里遗漏了一些明显的东西,但我找不到一种方法来遍历DataGrids DataGridRow集合。我有一个网格,它有一个类集合的itemssource。我正在尝试遍历这些行,并突出显示满足特定条件但我一辈子都看不到的任何行。您尝试过CollectionViewSource类吗 如何使用它进行过滤,请参见下文 您不想在网格中迭代。这是老斯库尔的想法。WPF和Silverlight中的网格已根据MVVM重新设计;关注点分离。您可以直接使用绑定到栅格的对象,而不是操纵栅格。所以网格

我有一种感觉,我在这里遗漏了一些明显的东西,但我找不到一种方法来遍历DataGrids DataGridRow集合。我有一个网格,它有一个类集合的itemssource。我正在尝试遍历这些行,并突出显示满足特定条件但我一辈子都看不到的任何行。

您尝试过CollectionViewSource类吗

如何使用它进行过滤,请参见下文


您不想在网格中迭代。这是老斯库尔的想法。WPF和Silverlight中的网格已根据MVVM重新设计;关注点分离。您可以直接使用绑定到栅格的对象,而不是操纵栅格。所以网格就成了一个表示问题。它的职责是读取对象并根据这些对象中的数据显示信息

您要做的是将属性附加到要绑定的对象,并根据这些设置设置颜色/字体/等的网格集样式。为此,您需要创建一个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中的datagrid声明中,我指定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>

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

希望有帮助