Библиотека GraphSharp - привязка макета

В нашем проекте мы используем библиотеку GraphSharp. Мы столкнулись с некоторыми проблемами, когда хотели удалить все ребра и вершины из графа.

В каждом примере есть, в xaml есть что-то подобное

<zoom:ZoomControl  Grid.Row="1"  Zoom="0.2" ZoomBoxOpacity="0.5" Background="#ff656565">

                    <toProjectGraph:EntityGraphLayout x:Name="graphLayout" Margin="10"
                    Graph="{Binding Path=GraphViewModel.EntityGraph}"
                    LayoutAlgorithmType="{Binding Path=GraphViewModel.LayoutAlgorithmType, Mode=OneWay}"
                    OverlapRemovalAlgorithmType="FSA"
                    HighlightAlgorithmType="Simple" 
                      />
                </zoom:ZoomControl>

xaml создает экземпляр нашего класса EntityGraphLayout и использует его для визуализации всего.

Можно ли каким-то образом "связать" этот экземпляр EntityGraphLayout к какому-либо свойству в нашей модели представления, чтобы мы могли ссылаться на него в коде модели представления?

Или, может быть, есть способ, которым мы можем создать экземпляр этого класса и сказать xaml, чтобы получить ссылку на объект по некоторому пути.

1 ответ

Решение

Похоже, что вы хотите создать объект в вашей модели представления, представить его как свойство и связать его с Content свойство вашего управления масштабированием, что-то вроде этого:

ViewModel:

public class ViewModel {
    private EntityGraphLayout _layout = new EntityGraphLayout();
    public EntityGraphLayout EntityGraphLayoutProperty
    { 
        get { return _layout; } 
        set { _layout = value; }
    }
}

XAML:

<zoom:ZoomControl Content="{Binding EntityGraphLayoutProperty}" Grid.Row="1"  Zoom="0.2" ZoomBoxOpacity="0.5" Background="#ff656565" >
</zoom:ZoomControl>

Обратите внимание, что вам нужно убедиться, что DataContext для управления масштабированием установлен ваш viewmodel.

Если вы хотите, чтобы он был создан в XAML, вы также можете получить доступ к объекту в вашей модели представления, обратившись к нему с помощью graphLayout имя, которое вы определили в XAML. Для этого потребуется ссылка на представление в вашей модели представления, что может быть не идеальным.

Другие вопросы по тегам