我想重新實現WPF中的一個窗體,它很容易在winforms中編程,並且看不到如何進展。該表格由三個窗格組成。右側窗格包含詳細數據 - 包含值Y或爲空的標誌列,而左側的兩個窗格包含彙總匹配和列之間差異的矩陣。突出顯示編程WPF單元格中的單元格點擊
右側窗格中的列數(n)是可變的,兩個左側窗格是n X n - 它們的大小也是動態的。當用戶單擊其中一個左窗格中的單元格時,該單元格將突出顯示並用於突出顯示右側窗格中的相應列。
例如,考慮匹配的單元格1,2的情況。讓我們假設它包含值2,並且Discrepancies的1,2單元格包含3.單擊單元格1,2時,它將突出顯示爲綠色,差異面板上的相應單元格將突出顯示爲紅色,並且列1和2的標記後的匹配,導致2個相應的條目突出顯示爲綠色和3個條目高亮紅:
Column1 Column 2
green Y Y
red Y
green Y Y
red Y
red Y
我決定使用一個列表視圖中WPF來實現此。由於數組的大小不同,我決定以編程方式設置網格視圖。下面是代碼(在VB.net)的一部分:
Private Sub DefineColumns(ByRef _GridView As GridView, MaxIndex As Integer)
With _GridView
For i = 0 To MaxIndex
Dim _ColumnTitle = "P" & (i + 1)
Dim _TextBlock = New FrameworkElementFactory(GetType(TextBlock))
Dim _Binding = New Binding(_ColumnTitle)
_TextBlock.SetBinding(TextBlock.TextProperty, _Binding)
_TextBlock.SetValue(HorizontalAlignmentProperty, Windows.HorizontalAlignment.Right)
Dim _DataTemplate = New DataTemplate()
_DataTemplate.VisualTree = _TextBlock
Dim _Column = New GridViewColumn()
With _Column
.CellTemplate = _DataTemplate
.Header = (i + 1)
.Width = 39
End With
.Columns.Add(_Column)
Next
End With
End Sub
的WPF形式的作品 - 但我怎麼能實現我所需要的高亮?我真的需要以某種方式對它進行編程,而且我似乎並沒有觸發器的用處,因爲我真的想永久性標記事物,以便可以滾動右側窗格。我需要做的就是在左側窗格中標記兩個選定的單元格,然後在右側窗格中循環選定的列,以綠色標記匹配項,並以紅色標註差異項。誰能幫忙?原則上看起來很簡單,但對於WPF來說,簡單的事情有時可能會非常複雜。