2012-02-20 83 views
0

我想重新實現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來說,簡單的事情有時可能會非常複雜。

回答

相關問題