Ecco il mio codice per la finestra:Grafico layout utilizzando Graph #
public partial class MainWindow
{
private MainWindowViewModel _mainWindowViewModel;
public MainWindow()
{
InitializeComponent();
_mainWindowViewModel = new MainWindowViewModel();
DataContext = _mainWindowViewModel;
}
}
E il codice vista del modello:
class MainWindowViewModel : ViewModelBase
{
private BidirectionalGraph<string, IEdge<string>> _graph;
public BidirectionalGraph<string, IEdge<string>> Graph
{
get { return _graph; }
set
{
_graph = value;
NotifyPropertyChanged("Graph");
}
}
public MainWindowViewModel()
{
Graph = new BidirectionalGraph<string, IEdge<string>>();
// test data
const string vertex1 = "123";
const string vertex2 = "456";
const string vertex3 = "ddd";
Graph.AddVertex(vertex1);
Graph.AddVertex(vertex2);
Graph.AddVertex(vertex3);
Graph.AddEdge(new Edge<string>(vertex1, vertex2));
Graph.AddEdge(new Edge<string>(vertex2, vertex3));
Graph.AddEdge(new Edge<string>(vertex2, vertex1));
}
}
classe ViewModelBase:
class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(string info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
}
E qui va il XAML:
<Controls:GraphLayout x:Name="graphLayout" Grid.Row="1" LayoutAlgorithmType="FR" OverlapRemovalAlgorithmType="FSA" HighlightAlgorithmType="Simple" Graph="{Binding Path=Graph}" />
Il problema è che non riesco a vedere nulla in questo layout. Forse lego i dati nel modo sbagliato? Graph # funziona correttamente con WPF4?
Aggiornamento: Ho aggiornato il mio codice, ma non vedo ancora nulla nel layout grafico.
Risolto: il layout grafico personalizzato deve essere aggiunto per visualizzare il grafico correttamente
public class CustomGraphLayout : GraphLayout<string, IEdge<string >, BidirectionalGraph<string, IEdge<string>>> {}
Oh, grazie. Proverò ad usare 'INotifyPropertyChanged', ma posso usare' DependencyObject' e 'DependencyProperty' invece? Puoi darmi un esempio? Grazie in anticipo per la risposta. –
È molto più tipico nella mia esperienza per i modelli di visualizzazione utilizzare INPC, ma ecco alcune discussioni sull'argomento http://stackoverflow.com/questions/291518/. Per quanto riguarda i campioni, il sito graphsharp ha alcuni http://graphsharp.codeplex.com/wikipage?title=Tutorials&referringTitle=Home – kenwarner
Grazie per il tuo commento, ho aggiornato il mio codice, ma non ci sono ancora risultati. –