silverlight   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了一个Silverlight的可视化图的DataBinding的Demo大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

    看了不少DataBinding的Demo都是商务应用的,这里做一个图的可视化的DataBinding的小Demo。这里为了简单,只是绘制简单的点和线:将图的相关信息GraphLayoutVM(点和边的位置)DataBinding到UI 显示。        下面是具体的实现。     先是DataBinding里最常用的的类ViewModelBase,实现INotifyPropertyCh
@H_489_15@

    看了不少DataBinding的Demo都是商务应用的,这里做一个图的可视化的DataBinding的小Demo。这里为了简单,只是绘制简单的点和线:将图的相关信息GraphLayoutVM(点和边的位置)DataBinding到UI 显示

  

一个Silverlight的可视化图的DataBinding的Demo

    下面是具体的实现。

    先是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

   {

       private Pointstart;

       public PointStart

       {

            get

            {

                returnstart;

            }

            set

            {

                if(start != value)

                {

                    start=value;

                    OnPropertyChanged("Start");

                }

            }

       }

       private Pointend;

       public PointEnd

       {

            get

            {

                returnend;

            }

            set

            {

                if(end != value)

                {

                    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

       {

            get

            {

                return@H_57_19@mPoint;

            }

            set

            {

                if(mPoint != value)

                {

                    mPoint = value;

                    OnPropertyChanged("MPoint");

                }

            }

       }

   }

}

 

 

拓扑图的Layoutviewmodel,就是存储边和点的位置。

GraphLayout.cs

 

using System.Windows;

usingSystem.Collections.ObjectModel;

 

namespacetestHierarchicalBinding

{

   public classGraphLayout:viewmodelBase

   {

       public GraphLayout()

       {

            LinesVM = newObservableCollection<LinkVM>();

            PointsVM = newObservableCollection<PointVM>();

            NAMEs = newObservableCollection<String>();

 

            LinkVMline1 = new LinkVM();

            line1.Start = new Point(20,10);

            line1.End = new Point(150,250);

            LinesVm.Add(line1);

 

            PointVMpoint1 = new PointVM();

            point1.MPoint = new Point(10,210);

            PointsVm.Add(point1);

 

            PointVMpoint2 = new PointVM();

            point2.MPoint = new Point(120,310);

            PointsVm.Add(point2);

 

            NAMEs.Add("whatis");

            NAMEs.Add("Hello");

       }

 

       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>

                <ItemsPanelTemplate>

                    <Canvas/> //注意在ItemsPanelTemplate里面选择CanvasLayout

                </ItemsPanelTemplate>

            </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"/>

                </DataTemplate>

            </ItemsControl.ItemTemplate>

        </ItemsControl>

 

        <ItemsControl x:Name="PointItemsControl" Itemssource="{Binding Path=PointsVM}">

            <ItemsControl.ItemsPanel>

                <ItemsPanelTemplate>

                    <Canvas/>//注意在ItemsPanelTemplate里面选择CanvasLayout

                </ItemsPanelTemplate>

            </ItemsControl.ItemsPanel>

 

            <ItemsControl.ItemTemplate>

                <DataTemplate>//决定如何绘制Itemssource里面绑定的每一个

                    <Path Fill="Gold" stroke="Black"strokeThickness="1">

                        <Path.Data>

                           <EllipseGeometry Center="{Binding MPoint}" RadiusX="5" RadiusY="5"/>

                        </Path.Data>

                    </Path>

                </DataTemplate>

            </ItemsControl.ItemTemplate>

        </ItemsControl>

 

    </Canvas>

</UserControl>

 

 

Xaml@R_673_11281@代码

@H_654_284@mainPage.xaml.cs:

usingSystem.Windows.Controls;

 

namespacetestHierarchicalBinding

{

   public partialclass@H_736_40@mainPage: UserControl

   {

       public MainPage()

       {

            InitializeComponent();

            GraphLayout@H_57_19@myLayout = new GraphLayout();

            LayoutRoot.DataContext = myLayout;

       }

   }

}

@H_217_1247@

大佬总结

以上是大佬教程为你收集整理的一个Silverlight的可视化图的DataBinding的Demo全部内容,希望文章能够帮你解决一个Silverlight的可视化图的DataBinding的Demo所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。