ComponentOne的的FlexGrid的背景颜色(ComponentOne's Fle

2019-09-20 23:55发布

我有一个WPF应用程序Caliburn.Micro。 我曾经有一个DataGrid,这里是代码的一部分:

<DataGrid x:Name="FirstEntries" Grid.Row="5"
      AutoGenerateColumns="False"
      BaseControls:DataGridExtension.Columns="{Binding FirstEntryGridColumns}"
      CanUserAddRows="False" IsReadOnly="True"
      SelectedItem="{Binding Path=SelectedFirstEntry}">
  <DataGrid.Resources>
      <conv:StatusToBackgroundColorConverter x:Key="StatusToBackgroundColor"/>
  </DataGrid.Resources>
  <DataGrid.ItemContainerStyle>
      <Style TargetType="{x:Type DataGridRow}">
          <Style.Setters>
              <Setter Property="Background" Value="{Binding Path=Status, Converter={StaticResource StatusToBackgroundColor}}"></Setter>
              <Setter Property="cal:Message.Attach" Value="[Event MouseDoubleClick] = [Action OnDoubleClickFirstEntry($dataContext)]"/>
          </Style.Setters>
      </Style>
  </DataGrid.ItemContainerStyle>

你可以看到,每行的背景颜色,势必状态字段值,双击事件被处理。 现在我迁移到的ComponentOne的FlexGrid的,我不知道我怎样才能达到同样存在,如FlexGrid的似乎不知道ItemContainerStyle。

你能帮我吗? 谢谢。

Answer 1:

C1的FlexGrid做事有点“WinFormsy”出于性能的考虑,并且不使用DependencyProperties,或样式/模板,这样你就不能使用数据触发设置行背景或设置命令事件像你的愿望。 他们的建议是使用Cell的鼠标点击事件来处理这一切的代码。

我的建议,如果可能的话,是要回去WPF 4.0的DataGrid和绑定为ICollectionView利用它的过滤功能 。 链接是对操纵集合视图许多比亚Stollnitz”教程。



Answer 2:

你吃过看看CellFactory类和ICellFactory接口。 我用这个来设定根据的项目状态在我的一个项目不同backgroundcolors。

Public Overrides Sub CreateCellContent(grid As C1.WPF.FlexGrid.C1FlexGrid, bdr As Border, rng As C1.WPF.FlexGrid.CellRange)
        MyBase.CreateCellContent(grid, bdr, rng)

        Dim infPre As InfPresenterTextEntity
        infPre = CType(grid.Rows(rng.Row).DataItem, InfPresenterTextEntity)

        If Not infPre Is Nothing Then
            If infPre.IsNew Then
                grid.Rows(rng.Row).Background = Brushes.LightGreen
            ElseIf infPre.IsDirty Then
                grid.Rows(rng.Row).Background = Brushes.LightYellow
            End If

            'grid.AutoSizeRow(rng.Row, 0)
            'grid.AutoSizeRows(rng.Row, rng.Row, 0)
        End if 
End Sub


文章来源: ComponentOne's FlexGrid Background Color