1. Try adding a reference to MindFusion.Diagramming.Wpf.DataBinding.dll to your project and creating a DataBinder object:
<d:Diagram x:Name="diagram" />
<d1:DataBinder x:Name="dataBinder"
NodeClass="std:ShapeNode"
NodeData="{StaticResource NodeDataSource}"
LinkData="{StaticResource LinkDataSource}"
NodeIdField="NodeId"
LinkIdField="LinkId"
LinkOriginIdField="OriginId"
LinkDestionationIdField="DestinationId"
DataBound="dataBinder_DataBound"
NodeDataChanged="dataBinder_NodeDataChanged">
<d1:DataBinder.Diagram>
<Binding ElementName="diagram" />
</d1:DataBinder.Diagram>
<d1:DataBinder.NodeDataDictionary>
<d1:BoundProperty Source="NewText" Destination="Text"></d1:BoundProperty>
<d1:BoundProperty Source="Shape" Destination="Shape"></d1:BoundProperty>
<d1:BoundProperty Source="NewBounds" Destination="Bounds"></d1:BoundProperty>
</d1:DataBinder.NodeDataDictionary>
<d1:DataBinder.LinkDataDictionary>
<d1:BoundProperty Source="NewText" Destination="Text"></d1:BoundProperty>
</d1:DataBinder.LinkDataDictionary>
</d1:DataBinder>
This is kind of experimental and we have never released it officially. Also it supports only one-way binding.
2. It can be done if there is a second dataset that contains node IDs, as shown above.
3. You could do that in the dataBinder_DataBound handler, where you must also run some layout algorithm to arrange the nodes, e.g.
private void dataBinder_DataBound(object sender, EventArgs e)
{
MindFusion.Diagramming.Wpf.Layout.CircularLayout cl = new MindFusion.Diagramming.Wpf.Layout.CircularLayout();
cl.Arrange(diagram);
}
4. Set the ScrollViewer's HorizontalScrollbarVisibility.
1. You don't need that, unless you must show more views over the same diagram (MDI), which is not fashionable nowadays.
2. If you place controls inside the diagram, I think the diagram will treat them as nodes and create DiagramNodeAdapters.
I hope that helps,
Stoyan