大佬教程收集整理的这篇文章主要介绍了一个Silverlight的可视化图的DataBinding的Demo,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
看了不少DataBinding的Demo都是商务应用的,这里做一个图的可视化的DataBinding的小Demo。这里为了简单,只是绘制简单的点和线:将图的相关信息GraphLayoutVM(点和边的位置)DataBinding到UI 显示。
下面是具体的实现。
先是DataBinding里最常用的的类viewmodelBase,实现INotifyPropertyChanged接口来获取图的变量或者UI发生变化等事件。
viewmodelBase.cs:
usingSystem.ComponentModel;
namespacetestHierarchicalBinding
public classviewmodelBase:INotifyPropertyChanged
public voidOnPropertyChanged(String properyName)
if(PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(properyName));
public eventPropertyChangedEventHandler PropertyChanged;
}
}
拓扑图的边的viewmodel,就是边的两端点的位置和一些相关信息。
LinkVm.cs:
using System.Windows;
namespacetestHierarchicalBinding
public classLinkVM:viewmodelBase
if(start != value)
OnPropertyChanged("Start");
if(end != value)
OnPropertyChanged("End");
}
}
拓扑图的点的viewmodel,就是点的位置
PointVm.cs:
using System.Windows;
namespacetestHierarchicalBinding
public classPointVM:viewmodelBase
private Point@H_57_19@mPoint;
public Point@H_57_19@mPoint
return@H_57_19@mPoint;
if(mPoint != value)
OnPropertyChanged("MPoint");
}
}
拓扑图的Layout的viewmodel,就是存储边和点的位置。
GraphLayout.cs:
using System.Windows;
usingSystem.Collections.ObjectModel;
namespacetestHierarchicalBinding
public classGraphLayout:viewmodelBase
LinesVM = newObservableCollection<LinkVM>();
PointsVM = newObservableCollection<PointVM>();
NAMEs = newObservableCollection<String>();
LinkVMline1 = new LinkVM();
line1.Start = new Point(20,10);
line1.End = new Point(150,250);
PointVMpoint1 = new PointVM();
point1.MPoint = new Point(10,210);
PointVMpoint2 = new PointVM();
point2.MPoint = new Point(120,310);
public ObservableCollection<LinkVM> LinesVM {get;set; }
//public ObservableCollection<Line>Lines { get; set; }
public ObservableCollection<PointVM> PointsVM {get;set; }
public ObservableCollection<String> Names {get;set; }
}
}
XAML 代码:
@H_654_284@mainPage.xaml:
<UserControl x:Class="testHierarchicalBinding.MainPage"
xmlns="http://scheR_762_11845@as.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://scheR_762_11845@as.microsoft.com/winfx/2006/xaml"
xmlns:d="http://scheR_762_11845@as.microsoft.com/expression/blend/2008"
xmlns:@H_399_584@mc="http://scheR_762_11845@as.openxmlformats.org/markup-compatibility/2006"
xmlns:data ="clr-namespace:testHierarchicalBinding"
@H_57_19@mc:Ignorable="d"
d:DesignHeight="500" d:DesignWidth="500">
<Canvas x:Name="LayoutRoot" BACkground="White">
<ItemsControl x:Name="LineItemsControl" Itemssource="{Binding Path=LinesVM}">
<ItemsControl.ItemsPanel>
<Canvas/> //注意在ItemsPanelTemplate里面选择Canvas的Layout
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>//决定如何绘制绑定的Itemssource里面的每一条边
<Line X1="{Binding Start.X}" Y1="{Binding Start.Y}" X2="{Binding End.X}" Y2="{Binding End.Y}" stroke="Black"strokeThickness="2"/>
</ItemsControl.ItemTemplate>
<ItemsControl x:Name="PointItemsControl" Itemssource="{Binding Path=PointsVM}">
<ItemsControl.ItemsPanel>
<Canvas/>//注意在ItemsPanelTemplate里面选择Canvas的Layout
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>//决定如何绘制Itemssource里面绑定的每一个点
<Path Fill="Gold" stroke="Black"strokeThickness="1">
<EllipseGeometry Center="{Binding MPoint}" RadiusX="5" RadiusY="5"/>
</ItemsControl.ItemTemplate>
</Canvas>
</UserControl>
namespacetestHierarchicalBinding
public partialclass@H_736_40@mainPage: UserControl
InitializeComponent();
GraphLayout@H_57_19@myLayout = new GraphLayout();
LayoutRoot.DataContext = myLayout;
}
}
以上是大佬教程为你收集整理的一个Silverlight的可视化图的DataBinding的Demo全部内容,希望文章能够帮你解决一个Silverlight的可视化图的DataBinding的Demo所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。