0

私たちのプロジェクトでは、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 に何らかのパスからオブジェクトへの参照を取得するように指示する方法があるかもしれません。

4

1 に答える 1

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ズーム コントロールの がビューモデルに設定されていることを確認する必要があることに注意してください。

graphLayoutXAML で作成する場合は、XAML で定義した名前で参照することにより、viewmodel 内のオブジェクトにアクセスすることもできます。これには、ビューモデル内のビューへの参照が必要になりますが、これは理想的ではない場合があります。

于 2013-01-05T13:30:03.567 に答える