0

GraphX for .NETを使用しており、ユーザーがクリックしたときに頂点を強調表示しようとしています。

イベントに登録しましたVertexSelected

public class MyGraphArea : GraphArea<Node, Edge, MiniFlowGraph>
{
    public MyGraphArea()
    {
        VertexSelected += VertexSelected_MarkVertex;
    }

    private void VertexSelected_MarkVertex(object sender,VertexSelectedEventArgs args)
    {
        HighlightBehaviour.SetHighlighted(args.VertexControl, true);
    }
}

しかし、UI では何も起こりませんでした。だから私は複数のオプションを追加しようとしました:

私が追加したコンストラクターに:

EnableVisualPropsApply = true;
HighlightBehaviour.SetIsHighlightEnabled(this, true);
SetVerticesHighlight(true, GraphControlType.VertexAndEdge);

イベントにも登録し、次のLoadedコードを追加しました。

foreach (var item in VertexList)
    HighlightBehaviour.SetIsHighlightEnabled(item.Value, true);

SetVerticesHighlight(true, GraphControlType.VertexAndEdge)次に、念のため、VertexSelectedイベントに行を追加しました。

しかし、何も起こりませんでした。

ソースコードを見ていますが、他に何も見つかりません。

4

1 に答える 1

0

次のコード行を追加するだけでよいと思います。

Graph.SetEdgesHighlight(true, GraphControlType.VertexAndEdge);
Graph.SetVerticesHighlight(true, GraphControlType.VertexAndEdge, EdgesType.All);

私は WindowsFormsProject の例をいじっていましたが、メソッドの return ステートメントの直前にこれらの行を追加しましたForm1.GenerateWpfVisuals()。イベントにサブスクライブする必要はありませんでした。ただし、標準の動作では、マウス クリックではなく、マウス ホバー時に頂点とエッジが強調表示されます。

強調表示に使用されるデフォルトのGold色は、次のように定義されていtemplate.xamlます。

<!-- VERTEX CONTROL -->
...
    <Style.Triggers>
        <Trigger Property="controls:HighlightBehaviour.Highlighted" Value="True">
            <Setter Property="Background" Value="Gold"/>
            <Setter Property="BorderThickness" Value="7"/>
        </Trigger>
    </Style.Triggers>

...

<!-- EDGE CONTROL -->
...
    <Style.Triggers>
        <Trigger Property="controls:HighlightBehaviour.Highlighted" Value="True">
            <Setter Property="Foreground" Value="Gold"/>
            <Setter Property="StrokeThickness" Value="5"/>
        </Trigger>
    </Style.Triggers>
于 2020-12-23T02:43:37.830 に答える