1

ノードに類似した2つのカスタムコントロールと、ノード間にリンクを描画するコントロールがあります。

両方のコントロールをできるだけxamlで記述してもらいたいと思います。リンクは両方のノードを依存関係プロパティとして格納します。ノードが移動するたびに、データバインディングを使用してノード間の行を移動します。

2つのノード間の距離に応じて、線の他の値、たとえばストローク幅を変更できると便利です。そのため、どちらかのノードが移動したときにプロパティを更新する必要があり、それがどのように機能するかについて頭を悩ませることはできません。

誰かアイデアがありますか?

4

2 に答える 2

1

あなたはそのようなことを試すことができます:

  1. 前の投稿のように、リンク クラスに幅、ストローク (必要なものは何でも) プロパティを定義します。
  2. そのプロパティに適用されるマルチバインディングを定義し、2 つのノードをバインディングに渡します。

<Multibinding Converter="{StaticResource converter}">
<Binding Path="Node1" RelativeSource|Source.../>
<Binding Path="Node2" ... />
</Multibinding>

  1. 基本的に、ノード間の距離に基づいてストロークがどのように見えるかを計算するインターフェイス IMultiValueConverter を実装します。

  2. xaml でコンバーターのインスタンスを作成し、それをマルチバインディングの Converter プロパティに追加します。

このソリューションの利点は、非常に明確なクラス モデルがあり、各クラスが単純なタスクを実行することです。さらに、後でコンバーター クラスを構成して、ノード クラスを変更せずに追加のケースをサポートすることができます。

一般に、複数のプロパティ値を別の 1 つのプロパティにマップする必要がある場合は常に、マルチバインディングとコンバーターを使用する必要があります。

于 2008-09-22T23:46:29.470 に答える
0

リンククラスでプロパティStrokeWidthを定義して、ノードが移動するたびに計算され、適切なスタイルプロパティをそれにバインドすることができます。

DataTriggersを使って何かを試みることもできると思いますが、DataTriggersを操作するには特定の値が必要です。つまり、どのような種類の式も使用できません。これにより、ノード間のさまざまな距離にソリューションを適切にスケーリングすることが困難になります。

于 2008-09-20T20:43:34.873 に答える