私は現在、グラフ(つまり、エッジを介して接続されている頂点の束)を作成し、このグラフをパターンとして使用して、他の(より大きな)グラフの束でそれを見つけることができるC#WPFアプリケーションに取り組んでいます( 「ホスト」グラフ)。各グラフ要素には、少なくともタイプとラベルがあります。
パターン グラフ要素 (辺と頂点) には、さまざまな「制限タイプ」を設定できます。
たとえば、頂点には、「この頂点のラベルは「頂点 A」でなければならない」または「この頂点のタイプはセット {タイプ A、タイプ B、タイプ H} にある必要がある」という制限を持つことができます。
エッジの場合、制限タイプは少し難しくなります。エッジは、「単純な」エッジまたは「パス」エッジのいずれかに制限できます。パターン グラフの 2 つの頂点間のパス エッジは、ホスト グラフの 2 つの頂点間の複数のエッジ (および頂点) を見つけることができるプレースホルダーと見なすことができます。対照的に、単純なエッジでは、ホスト グラフで 1 つのエッジのみを見つけることができます (追加の頂点はありません)。
エッジに (通常のエッジ制限ではなく) パス制限がある場合、最小パス長やパスで許可される頂点タイプなどの追加のプロパティがあります。
型制限構造は、次の UML クラス図で確認できます。
~~~
UI の観点から: ユーザーは、エッジにパス制限があるかどうかを構成できる必要があります。ある場合は、追加設定に必要な追加コントロール (TextBoxes、ListBoxes など) が自動的に表示されます。すべてのコントロールの変更は、データ構造に自動的に反映される必要があります。
選択したエッジの設定を変更するときのユーザー インターフェイスの動作は次のとおり です。また、ここでは頂点とエッジのオーバーラップの設定を無視します。)
~~~
最後に、私の質問は次のように要約されます。
WPF のデータ バインディングの優雅さを維持しながら、このような動的なオブジェクト クラスの変更を実装するにはどうすればよいでしょうか。(動的なオブジェクト クラスの変更とは、[このエッジをパスと見なす] チェックボックスをクリックすることで、選択したエッジが異なる制限タイプを取得することを意味します。)
「このエッジをパスと見なす」チェックボックスの値を変更したときにトリガーされる古い学校のイベントリスナーを作成し、それを使用して他のサイドバーコントロールの可視性を「手動で」更新する必要がありますか?
なんらかの形で制限クラスの構造を変更すると、何らかの形で役立つでしょうか?