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 回答