2013-01-05 55 views
0

在我們的項目中,我們使用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財產,是這樣的:

視圖模型:

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名稱引用它來訪問視圖模型中的對象。這將需要引用視圖模型中的視圖,這可能並不理想。

+0

謝謝,那正是我想要的。 – Andna