GraphSharp库 - 绑定布局

时间:2013-01-05 11:11:33

标签: wpf xaml data-binding graph-sharp

在我们的项目中,我们使用的是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 个答案:

答案 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中的视图,这可能并不理想。