public NetworkView(NetworkViewModel viewModel) { height = jQuery.Window.GetHeight(); width = jQuery.Window.GetWidth(); vm = viewModel; force = D3.Layout.Force() .Size(new int[] { width, height }) .LinkDistance(150) .Friction(0.7) .Charge(-700) .On("tick", Tick); zoom = D3.Behavior .Zoom() .ScaleExtent(new Number[] { minZoom, maxZoom }) .Center2(new Number[] { width / 2, height / 2 }) .On("zoom", zoomed); svg = D3.Select("#networksvg") .Attr("width", width) .Attr("height", height) .Call(zoom) .Append("g"); dragBehavior = force.OnDrag() .On("dragstart", dragstart); // Add InfoBox SVGexactTip = D3.Select("#infoBox").Style("opacity", 0); nodeData = (Stack <EntityNode>)(object) force.Nodes(); linkData = (Stack <EntityLink>)(object) force.Links(); link = svg.SelectAll(".link"); node = svg.SelectAll(".node"); Update(); ViewBase.RegisterViewModel(vm); // Create event listeners for MVVM vm.OnNewNodes += OnNodesChange; vm.OnSelectedNodesAdded += vm_OnSelectedNodesAdded; vm.OnSelectedNodesCleared += vm_OnSelectedNodesCleared; vm.OnSelectedLinksAdded += vm_OnSelectedLinksAdded; vm.OnInfoBoxClose += vm_OnInfoBoxClose; vm.OnZoom += vm_OnZoom; jQuery.Window.Resize(OnResize); jQuery.OnDocumentReady(delegate() { Window.SetTimeout(delegate() { vm.ProcessQueue(); }, 10); }); }