我在需要更改頂點(diǎn)外觀的項(xiàng)目中使用 GraphSharp。我試圖創(chuàng)建一個自定義頂點(diǎn)類,它只有一個名為 Name 的屬性。然后我創(chuàng)建了一個 ViewModel 類,我在其中創(chuàng)建了頂點(diǎn)和邊。為了呈現(xiàn)此圖,我為我的自定義頂點(diǎn)創(chuàng)建了一個 DataTemplate。代碼如下:-class MyVertex{ public string Name { get; set; }}class MainViewModel : INotifyPropertyChanged{ public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged([CallerMemberName]string name = "") { if (PropertyChanged == null) return; PropertyChanged(this, new PropertyChangedEventArgs(name)); } public IBidirectionalGraph<MyVertex, IEdge<MyVertex>> Graph { get; private set; } public void CreateGraphToVisualize() { var g = new BidirectionalGraph<MyVertex, IEdge<MyVertex>>(); //add the vertices to the graph MyVertex[] vertices = new MyVertex[5]; for (int i = 0; i < 5; i++) { vertices[i] = new MyVertex { Name = "Vertex " + i.ToString() }; g.AddVertex(vertices[i]); } //add some edges to the graph g.AddEdge(new Edge<MyVertex>(vertices[0], vertices[1])); g.AddEdge(new Edge<MyVertex>(vertices[1], vertices[2])); g.AddEdge(new Edge<MyVertex>(vertices[2], vertices[3])); g.AddEdge(new Edge<MyVertex>(vertices[3], vertices[1])); g.AddEdge(new Edge<MyVertex>(vertices[1], vertices[4])); Graph = g; } public MainViewModel() { CreateGraphToVisualize(); }}但是當(dāng)我運(yùn)行它時,我只得到縮放控制但沒有圖表。所以,我想我做錯了什么。然后我找到了這個并創(chuàng)建了一個新項(xiàng)目并復(fù)制了那里提供的代碼。我必須根據(jù)自己的判斷來判斷 DataTemplate 的放置位置,所以我將它放在 Window.Resources 塊中,就像上面的代碼一樣。我還對代碼進(jìn)行了一些更改以使用通用類,因?yàn)檎军c(diǎn)中使用的類顯然不可用。但最終結(jié)果與我自己的代碼相同。沒有圖表。我在這里錯過了什么嗎?在此先感謝您的幫助。
1 回答

SMILET
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個贊
如果沒有正確的類型組合,則無法實(shí)例化 GraphLayout。
添加如下內(nèi)容:
public class MyGraph : BidirectionalGraph<MyVertex, IEdge<MyVertex>>{}
public class MyGraphLayout : GraphLayout<MyVertex, IEdge<MyVertex>,MyGraph>
{
};
然后使用定義的 MyGraphLayout 代替。
<local:MyGraphLayout x:Name="graphLayout"
Graph="{Binding Graph}"
LayoutAlgorithmType="ISOM"
OverlapRemovalAlgorithmType="FSA"
HighlightAlgorithmType="Simple"/>
- 1 回答
- 0 關(guān)注
- 122 瀏覽
添加回答
舉報(bào)
0/150
提交
取消