突出显示编程WPF单元格中的单元格点击
我想重新实现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来说,简单的事情有时可能会非常复杂。
我没有在这里得到任何答案,所以我决定削减我的问题的范围,并要求在MSDN上。然后,我设法对问题进行编程。我的答案可以在这里找到: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/6d68c606-d71e-4f89-a016-1e344d784467/#978f068f-a956-411b-b3d1-df8ac4a92cd8