在我们的项目中,我们使用的是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从某个路径获取对象的参考。
答案 0 :(得分:1)
听起来你想要的是在viewmodel中创建对象,将其作为属性公开,并将其绑定到缩放控件的Content
属性,如下所示:
视图模型:
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
设置为您的视图模型。
如果您希望在XAML中创建它,您还可以通过在XAML中定义的graphLayout
名称引用它来访问viewmodel中的对象。这需要引用viewmodel中的视图,这可能并不理想。