Files
tsWPFCore/tsTableView.xaml.vb

61 lines
2.7 KiB
VB.net

Imports DevExpress.Xpf.Grid
Public Class tsTableView
Inherits DevExpress.Xpf.Grid.TableView
Public Property ColorFuentePersonalizado As Boolean
Public Sub New()
' Esta llamada es exigida por el diseñador.
MyBase.New
InitializeComponent()
AllowFixedColumnMenu = True
' Agregue cualquier inicialización después de la llamada a InitializeComponent().
End Sub
Public Sub New(masterRootNode As MasterNodeContainer, masterRootDataItem As MasterRowsContainer, detailDescriptor As DataControlDetailDescriptor)
' Esta llamada es exigida por el diseñador.
MyBase.New(masterRootNode, masterRootDataItem, detailDescriptor)
InitializeComponent()
AllowFixedColumnMenu = True
' Agregue cualquier inicialización después de la llamada a InitializeComponent().
End Sub
Private Function ShadeBrush(ByVal brush As SolidColorBrush) As SolidColorBrush
Dim originalColor As Color = brush.Color
Dim coefficient As Single = 0.9F
Dim a As Byte = originalColor.A
If Not Grid.IsKeyboardFocusWithin Then a = CByte((originalColor.A / 2))
Dim r As Byte = CByte((originalColor.R * coefficient))
Dim g As Byte = CByte((originalColor.G * coefficient))
Dim b As Byte = CByte((originalColor.B * coefficient))
Return New SolidColorBrush(Color.FromArgb(a, r, g, b))
End Function
Private Sub TableView_CustomRowAppearance(sender As Object, e As CustomRowAppearanceEventArgs)
If e.RowSelectionState <> SelectionState.None Then
Dim result As Object = e.ConditionalValue
If e.Property Is TextBlock.ForegroundProperty OrElse e.Property Is TextBlock.BackgroundProperty Then
Dim original As SolidColorBrush = TryCast(e.OriginalValue, SolidColorBrush)
Dim conditional As SolidColorBrush = TryCast(e.ConditionalValue, SolidColorBrush)
If Me.ColorFuentePersonalizado AndAlso e.Property Is TextBlock.ForegroundProperty Then
Dim row = Me.Grid.GetRow(e.RowHandle)
conditional = TryCast(row.GetType.GetProperty("ColorFuenteFila").GetValue(row), SolidColorBrush)
End If
If conditional IsNot Nothing AndAlso (original Is Nothing OrElse original.Color <> conditional.Color) Then result = ShadeBrush(conditional)
End If
e.Result = result
e.Handled = True
End If
End Sub
Private Sub tsTableView_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
If ColorFuentePersonalizado Then
Me.RowStyle = Me.FindResource("tsRowStyle")
Me.CellStyle = Me.FindResource("tsCellStyle")
End If
End Sub
End Class