WPFでフォームを再実装しようとしていますが、これはwinformsでプログラムするのが簡単で、進捗を見ることができません。フォームは3つのペインで構成されています。右側のペインには詳細なデータが含まれています。フラグの列には値Yが含まれているか空白ですが、2つの左手枠には列間の一致と不一致を要約する行列が含まれています。クリック時にWPFリストビューでプログラムされたセルを強調表示します。
右側のペインの列数(n)は可変で、2つの左側ペインはn×nです。これらのペインのサイズも動的なので、ユーザーが左ペインのいずれかのセルをクリックすると、そのペインが強調表示され、右側のペインで適切な列が強調表示されます。
たとえば、Matchesのセル1,2の場合を考えてみましょう。セル1,2がクリックされると、緑色に強調表示され、相違パネルの対応するセルが赤く強調表示され、セル1,2がクリックされると、相違パネルの対応するセルが赤く強調表示されます。
Column1 Column 2
green Y Y
red Y
green Y Y
red Y
red Y
IがWPFでこれを実装するリストビューを使用することを決めた:列1及び2は、緑色強調表示され、3つのエントリが赤色強調表示された2つの対応するエントリで、その結果、マッチでマークアップされています。配列のサイズは可変なので、プログラムでグリッドビューを設定することにしました。ここで(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フォームが動作します - しかし、どのように私は私が必要と強調表示を達成することができますか?私は本当に何とかそれをプログラムする必要があり、それは私が実際に永久に物事をマークして右のペインをスクロールできるようにするためにトリガは任意の用途であると私には思われません。私がする必要があるのは、左側のペインで2つの選択されたセルにマークを付け、右側のペインで選択した列をループして、緑と不一致を赤でマークします。誰も助けることができますか?原理的にはとてもシンプルなようですが、WPFでは単純なものは実装するのが非常に複雑なことがあります。