#c# #wpf #graphx-net
#c# #wpf #graphx-net
Вопрос:
Я использую GraphX для .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);
}
}
Но в пользовательском интерфейсе ничего не произошло. Поэтому я попытался добавить несколько вариантов:
В конструктор я добавил:
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
событию, на всякий случай.
Но ничего не произошло.
Я смотрю на исходный код и больше ничего не могу найти.
Ответ №1:
Я считаю, что вам просто нужно добавить следующие строки кода:
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>