Библиотека 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. Для этого потребуется ссылка на представление в вашей модели представления, что может быть не идеальным.