很久没写博文了,最近做路段中分段为其填充不同的颜色,以表示不同的状态。

大家都知道,Silverlight中可以为矩形设置渐变填充,我们在其基础上添加一行颜色即可实现分段填充,如下比较:

填充后图片对比:

 

代码对比: 

 

 

从上面代码和实现效果可以看出,只要在每个颜色结束值中加入和开始值一样的值就可以实现局部颜色显示同一种颜色。

后台代码添加分段矩形和前台类似,首先构造LinearGradientBrush对象,然后构造N个GradientStop对象,将GradientStop对象添加到LinearGradientBrush对象中,再将LinearGradientBrush对象赋值给矩形的Fill属性即可。

 

     后台代码

 

至于手动给矩形着色暂时未考虑,大家如果有更好的实现,可以给我留言,先在此谢过。

代码:Silverlight实现LinearGradientBrush的GradientStop为矩形分段

作者:彭海松

  出处:http://www.cnblogs.com/haisongvip/

  本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

posted @ 2012-01-04 16:15 彭海松 阅读(1238) 评论(2) 编辑
下面的这些DOS命令是我几年前在网上看到整理下来的,在此分享一下:

 

      一,ping

  它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机的操作系统等。下面就来看看它的一些常用的操作。先看看帮助吧,在DOS窗口中键入:ping /? 回车,。所示的帮助画面。在此,我们只掌握一些基本的很有用的参数就可以了。
  -t 表示将不间断向目标IP发送数据包,直到我们强迫其停止。试想,如果你使用100M的宽带接入,而目标IP是56K的小猫,那么要不了多久,目标IP就因为承受不了这么多的数据而掉线,呵呵,一次攻击就这么简单的实现了。
  -l 定义发送数据包的大小,默认为32字节,我们利用它可以最大定义到65500字节。结合上面介绍的-t参数一起使用,会有更好的效果哦。    
  -n 定义向目标IP发送数据包的次数,默认为3次。如果网络速度比较慢,3次对我们来说也浪费了不少时间,因为现在我们的目的仅仅是判断目标IP是否存在,那么就定义为一次吧。
  说明一下,如果-t 参数和 -n参数一起使用,ping命令就以放在后面的参数为标准,比如“ping IP -t -n 3”,虽然使用了-t参数,但并不是一直ping下去,而是只ping 3次。另外,ping命令不一定非得ping IP,也可以直接ping主机域名,这样就可以得到主机的IP。
  下面我们举个例子来说明一下具体用法。
  这里time=2表示从发出数据包到接受到返回数据包所用的时间是2秒,从这里可以判断网络连接速度的大小 。从TTL的返回值可以初步判断被ping主机的操作系统,之所以说“初步判断”是因为这个值是可以修改的。这里TTL=32表示操作系统可能是win98。
  (小知识:如果TTL=128,则表示目标主机可能是Win2000;如果TTL=250,则目标主机可能是Unix)
  至于利用ping命令可以快速查找局域网故障,可以快速搜索最快的QQ服务器,可以对别人进行ping攻击……这些就靠大家自己发挥了。

 

  二,nbtstat
  该命令使用TCP/IP上的NetBIOS显示协议统计和当前TCP/IP连接,使用这个命令你可以得到远程主机的NETBIOS信息,比如用户名、所属的工作组、网卡的MAC地址等。在此我们就有必要了解几个基本的参数。    
  -a 使用这个参数,只要你知道了远程主机的机器名称,就可以得到它的NETBIOS信息(下同)。
  -A 这个参数也可以得到远程主机的NETBIOS信息,但需要你知道它的IP。
  -n 列出本地机器的NETBIOS信息。
  当得到了对方的IP或者机器名的时候,就可以使用nbtstat命令来进一步得到对方的信息了,这又增加了我们入侵的保险系数。

 

  三,netstat
  这是一个用来查看网络状态的命令,操作简便功能强大。    
  -a 查看本地机器的所有开放端口,可以有效发现和预防木马,可以知道机器所开的服务等信息。
  这里可以看出本地机器开放有FTP服务、Telnet服务、邮件服务、WEB服务等。用法:netstat -a IP。
  -r 列出当前的路由信息,告诉我们本地机器的网关、子网掩码等信息。用法:netstat -r IP。

 

  四,tracert
  跟踪路由信息,使用此命令可以查出数据从本地机器传输到目标主机所经过的所有途径,这对我们了解网络布局和结构很有帮助。
  这里说明数据从本地机器传输到192.168.0.1的机器上,中间没有经过任何中转,说明这两台机器是在同一段局域网内。用法:tracert IP。
 

     五,net

  这个命令是网络命令中最重要的一个,必须透彻掌握它的每一个子命令的用法,因为它的功能实在是太强大了,这简直就是微软为我们提供的最好的入侵工具。首先让我们来看一看它都有那些子命令,键入net /?回车。
  在这里,我们重点掌握几个入侵常用的子命令。
  net view
  使用此命令查看远程主机的所以共享资源。命令格式为net view \\IP。
  net use
  把远程主机的某个共享资源影射为本地盘符,图形界面方便使用,呵呵。命令格式为net use x: \\IP\sharename。上面一个表示把192.168.0.5IP的共享名为magic的目录影射为本地的Z盘。下面表示和192.168.0.7建立IPC$连接(net use $">\\IP\IPC$ "password" /user:"name"),建立了IPC$连接后,呵呵,就可以上传文件了:copy nc.exe $">\\192.168.0.7\admin$,表示把本地目录下的nc.exe传到远程主机,结合后面要介绍到的其他DOS命令就可以实现入侵了。  
  net start
  使用它来启动远程主机上的服务。当你和远程主机建立连接后,如果发现它的什么服务没有启动,而你又想利用此服务怎么办?就使用这个命令来启动吧。
     用法:net start servername,成功启动了telnet服务。
  net stop
  入侵后发现远程主机的某个服务碍手碍脚,怎么办?利用这个命令停掉就ok了,用法和net start同。
  net user
  查看和帐户有关的情况,包括新建帐户、删除帐户、查看特定帐户、激活帐户、帐户禁用等。这对我们入侵是很有利的,最重要的,它为我们克隆帐户提供了前提。键入不带参数的net user,可以查看所有用户,包括已经禁用的。下面分别讲解。
  1,net user abcd 1234 /add,新建一个用户名为abcd,密码为1234的帐户,默认为user组成员。
  2,net user abcd /del,将用户名为abcd的用户删除。
  3,net user abcd /active:no,将用户名为abcd的用户禁用。
  4,net user abcd /active:yes,激活用户名为abcd的用户。
  5,net user abcd,查看用户名为abcd的用户的情况
  net localgroup
  查看所有和用户组有关的信息和进行相关操作。键入不带参数的net localgroup即列出当前所有的用户组。在入侵过程中,我们一般利用它来把某个帐户提升为administrator组帐户,这样我们利用这个帐户就可以控制整个远程主机了。用法:net localgroup groupname username /add。
  现在我们把刚才新建的用户abcd加到administrator组里去了,这时候abcd用户已经是超级管理员了,呵呵,你可以再使用net user abcd来查看他的状态。但这样太明显了,网管一看用户情况就能漏出破绽,所以这种方法只能对付菜鸟网管,但我们还得知道。现在的手段都是利用其他工具和手段克隆一个让网管看不出来的超级管理员,这是后话。有兴趣的朋友可以参照《黑客防线》第30期上的《由浅入深解析隆帐户》一文。
  net time
  这个命令可以查看远程主机当前的时间。如果你的目标只是进入到远程主机里面,那么也许就用不到这个命令了。但简单的入侵成功了,难道只是看看吗?我们需要进一步渗透。这就连远程主机当前的时间都需要知道,因为利用时间和其他手段(后面会讲到)可以实现某个命令和程序的定时启动,为我们进一步入侵打好基础。用法:net time \\IP。

 

  六,at
  这个命令的作用是安排在特定日期或时间执行某个特定的命令和程序(知道net time的重要了吧?)。当我们知道了远程主机的当前时间,就可以利用此命令让其在以后的某个时间(比如2分钟后)执行某个程序和命令。用法:at time command \\computer。
  表示在6点55分时,让名称为a-01的计算机开启telnet服务(这里net start telnet即为开启telnet服务的命令)。
 

  七,ftp

  大家对这个命令应该比较熟悉了吧?网络上开放的ftp的主机很多,其中很大一部分是匿名的,也就是说任何人都可以登陆上去。现在如果你扫到了一台开放ftp服务的主机(一般都是开了21端口的机器),如果你还不会使用ftp的命令怎么办?下面就给出基本的ftp命令使用方法。
  首先在命令行键入ftp回车,出现ftp的提示符,这时候可以键入“help”来查看帮助(任何DOS命令都可以使用此方法查看其帮助)。
  大家可能看到了,这么多命令该怎么用?其实也用不到那么多,掌握几个基本的就够了。
  首先是登陆过程,这就要用到open了,直接在ftp的提示符下输入“open 主机IP ftp端口”回车即可,一般端口默认都是21,可以不写。接着就是输入合法的用户名和密码进行登陆了,这里以匿名ftp为例介绍。
  用户名和密码都是ftp,密码是不显示的。当提示**** logged in时,就说明登陆成功。这里因为是匿名登陆,所以用户显示为Anonymous。
  接下来就要介绍具体命令的使用方法了。
  dir 跟DOS命令一样,用于查看服务器的文件,直接敲上dir回车,就可以看到此ftp服务器上的文件。
  cd 进入某个文件夹。
  get 下载文件到本地机器。
  put 上传文件到远程服务器。这就要看远程ftp服务器是否给了你可写的权限了,如果可以,呵呵,该怎么 利用就不多说了,大家就自由发挥去吧。
  delete 删除远程ftp服务器上的文件。这也必须保证你有可写的权限。
  bye 退出当前连接。
  quit 同上。

 

  八,telnet
  功能强大的远程登陆命令,几乎所有的入侵者都喜欢用它,屡试不爽。为什么?它操作简单,如同使用自己的机器一样,只要你熟悉DOS命令,在成功以administrator身份连接了远程机器后,就可以用它来**想干的一切了。下面介绍一下使用方法,首先键入telnet回车,再键入help查看其帮助信息。
  然后在提示符下键入open IP回车,这时就出现了登陆窗口,让你输入合法的用户名和密码,这里输入任何密码都是不显示的。
  当输入用户名和密码都正确后就成功建立了telnet连接,这时候你就在远程主机上具有了和此用户一样的权限,利用DOS命令就可以实现你想干的事情了。这里我使用的超级管理员权限登陆的。
  另外大家应该清楚,任何人要想进入系统,必须得有一个合法的用户名和密码(输入法漏洞差不多绝迹了吧),哪怕你拿到帐户的只有一个很小的权限,你也可以利用它来达到最后的目的。所以坚决消灭空口令,给自己的帐户加上一个强壮的密码,是最好的防御弱口令入侵的方法。
posted @ 2011-12-24 20:33 彭海松 阅读(806) 评论(0) 编辑

  前几天发过一篇Silverlight动态加载菜单和菜单动画的文章,当时界面布局用的控件是Canvas,由于要对不同屏幕尺寸适应,所以需要更换布局元素,今天我就把我更改布局元素的代码分享一下,也算是对今天工作的一个总结吧!

   

  代码部分:

  Xaml代码: 容器这里改用StackPanel,外面嵌套ScrollViewer,内容超出后可以下拉

 

以前的页面:
<Canvas Margin="11,12,19,0" Width="100">
  <Image Height="21" x:Name="Img_Story" Margin="0" Source="/UserCtrol.VMS;component/Images/sblb_roadbg.png" Stretch="Fill" VerticalAlignment="Top"/>
  <Canvas Name="Canvas_KayoutRoot" Margin="25,0,0,0">
  </Canvas>
</Canvas>

 

更改后的代码:
<ScrollViewer x:Name="scrolls" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
  <StackPanel x:Name="Panel_Road" Margin="0,10">
  </StackPanel>
</ScrollViewer>

 

  Xam.cs 代码:  T代表你定义的对象

 

以前的代码:
/// <summary>
/// 定义白色
/// </summary>
SolidColorBrush WhiteColorBrush = new SolidColorBrush();

/// <summary>
/// 定义灰色
/// </summary>
SolidColorBrush OtherColorBrush = new SolidColorBrush();

//设置颜色
WhiteColorBrush.Color = Color.FromArgb(255255255255);
OtherColorBrush.Color = Color.FromArgb(255616161);
/// <summary>
/// 遍历返回的数据加载到页面中
/// </summary>
/// <param name="_List">菜单列表</param>
private void AddElementToPage(List<T> _List)
{
  Int32 elmentNum = 0;  //当前列表的序列号
  foreach (T item in _List)
  {
    TextBlock _TextBlock = new TextBlock();
    _TextBlock.Text = item.Name;
    Canvas.SetTop(_TextBlock, elmentNum * 30);
     _TextBlock.FontSize = 14;
    if (elmentNum == 0)
    {
      _TextBlock.Foreground = WhiteColorBrush;
    }
    else
    {
      _TextBlock.Foreground = OtherColorBrush;
    }
    //点击事件
    _TextBlock.MouseLeftButtonDown += new MouseButtonEventHandler(_TextBlock_MouseLeftButtonDown);
    //将元素添加到容器中
    _NewDeviceItem.Canvas_KayoutRoot.Children.Add(_TextBlock);
    elmentNum++;
  }
}

/// <summary>
/// 点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void _TextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
  TextBlock Txt_Road = sender as TextBlock;
  //检索页面元素,设置文字颜色
  foreach (FrameworkElement fe in _NewDeviceItem.Canvas_KayoutRoot.Children)
  {
    if (fe is TextBlock)    //检索TextBlock
    {
      TextBlock chk = (TextBlock)fe;
      if (chk.Equals(Txt_Road))
      {
        chk.Foreground = WhiteColorBrush;   //当前点击的设为白色
      }
      else
      {
        chk.Foreground = OtherColorBrush;   //其他的改变回原来默认颜色
      }
    }
  }
  //获得元素当前x坐标
  Double Txt_Road_Left = Canvas.GetLeft(Txt_Road);
  //获得元素当前x坐标
  Double Txt_Road_Top = Canvas.GetTop(Txt_Road);
  //创建点击动画
  CreateStoryBoard(Txt_Road_Left, Txt_Road_Top);
}

/// <summary>
/// 创建点击动画
/// </summary>
/// <param name="Txt_Road_Left">x轴位置</param>
/// <param name="Txt_Road_Top">y轴位置</param>
private void CreateStoryBoard(Double Txt_Road_Left, Double Txt_Road_Top)
{
  Storyboard storyboard = new Storyboard();   //实例化Storyboard
  
//实例化X轴动画对象
  DoubleAnimation doubleAnimationX = new DoubleAnimation();
  doubleAnimationX.Duration = new Duration(TimeSpan.FromMilliseconds(500));   //设置动画延时时间
  doubleAnimationX.From = Txt_Road_Left - 10;     //设置动画初始值
  doubleAnimationX.To = Txt_Road_Left;    //设置动画完成值
  Storyboard.SetTarget(doubleAnimationX, this.Img_Story);     //设置动画操作对象
  Storyboard.SetTargetProperty(doubleAnimationX, new PropertyPath("(Canvas.Left)"));      //设置动画操作对象的属性
  storyboard.Children.Add(doubleAnimationX);      //将动画加载到Storyboard
  
//实例化Y轴动画对象
  DoubleAnimation doubleAnimationY = new DoubleAnimation();
  doubleAnimationY.Duration = new Duration(TimeSpan.FromMilliseconds(0));     //设置动画延时时间
  doubleAnimationY.From = Txt_Road_Top;   //设置动画初始值
  doubleAnimationY.To = Txt_Road_Top;     //设置动画完成值
  Storyboard.SetTarget(doubleAnimationY, this.Img_Story);     //设置动画操作对象
  Storyboard.SetTargetProperty(doubleAnimationY, new PropertyPath("(Canvas.Top)"));   //设置动画操作对象的属性
  storyboard.Children.Add(doubleAnimationY);      //将动画加载到Storyboard
  
//开始动画
  storyboard.Begin();
}

 

更改后的代码:
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using Microsoft.Phone.Controls;
using System.Windows.Media.Imaging;

namespace PhoneTest1
{
    public partial class MaainPage : PhoneApplicationPage
    {
        /// <summary>
        
/// 记录最后一次点击
        
/// </summary>
        Canvas _LastCanvas = new Canvas();

        /// <summary>
        
/// 动画图片
        
/// </summary>
        Image Img_Story = new Image();

        /// <summary>
        
/// 定义白色
        
/// </summary>
        SolidColorBrush WhiteColorBrush = new SolidColorBrush();

        /// <summary>
        
/// 定义灰色
        
/// </summary>
        SolidColorBrush OtherColorBrush = new SolidColorBrush();

        public MainPage()
        {
            InitializeComponent();
            this.Loaded += new RoutedEventHandler(MainPage_Loaded);
        }

        void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            //设置颜色
            WhiteColorBrush.Color = Color.FromArgb(255255255255);
            OtherColorBrush.Color = Color.FromArgb(255616161);
            Boolean _IsFirstAddElement = false;
            for (int i = 0; i < 10; i++)
            {
                Canvas _Canvas = new Canvas();
                _Canvas.Height = 60;
                TextBlock _TextBlock = new TextBlock();
                _TextBlock.Text = i.ToString() + ":测试程序"//你自己重命名
                Canvas.SetLeft(_TextBlock, 30); //30是距canvas左边,你自己可以调整
                Canvas.SetZIndex(_TextBlock, 100); //设置图层,防止文本被遮盖
                _TextBlock.FontSize = 30;
                _Canvas.Children.Add(_TextBlock);
                if (!_IsFirstAddElement)
                {
                    _IsFirstAddElement = true;
                    this.Img_Story.Source = new BitmapImage(new Uri("/PhoneTest1;component/Image/Test.PNG", UriKind.RelativeOrAbsolute));
                    Canvas.SetLeft(Img_Story, 0); //30是距canvas左边,你自己可以调整
                    Canvas.SetZIndex(Img_Story, 0); //设置图层,防止文本被遮盖
                    _Canvas.Children.Add(this.Img_Story);
                    this._LastCanvas = _Canvas;
                    _TextBlock.Foreground = WhiteColorBrush;
                }
                else
                {
                    _TextBlock.Foreground = OtherColorBrush;
                }
                //点击事件
                _TextBlock.MouseLeftButtonDown += new MouseButtonEventHandler(_TextBlock_MouseLeftButtonDown);
                //将元素添加到容器中
                this.Panel_Element.Children.Add(_Canvas);
            }
        }

        /// <summary>
        
/// 点击事件
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>
        void _TextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            TextBlock Txt_Road = sender as TextBlock;
            //检索页面元素,设置文字颜色
            foreach (FrameworkElement fe in this.Panel_Element.Children)
            {
                if (fe is Canvas)    //检索TextBlock
                {
                    Canvas _Canvas = (Canvas)fe;
                    TextBlock chk = (TextBlock)_Canvas.Children[0];
                    if (chk.Equals(Txt_Road))
                    {
                        _LastCanvas.Children.Remove(this.Img_Story);
                        _Canvas.Children.Add(this.Img_Story);
                        this._LastCanvas = _Canvas;
                        chk.Foreground = WhiteColorBrush;   //当前点击的设为白色
                        CreateStoryBoard();
                    }
                    else
                    {
                        chk.Foreground = OtherColorBrush;   //其他的改变回原来默认颜色
                    }
                }
            }
        }

        /// <summary>
        
/// 创建点击动画
        
/// </summary>
        private void CreateStoryBoard()
        {
            Storyboard storyboard = new Storyboard();   //实例化Storyboard
            
//实例化X轴动画对象
            DoubleAnimation doubleAnimationX = new DoubleAnimation();
            doubleAnimationX.Duration = new Duration(TimeSpan.FromMilliseconds(500));   //设置动画延时时间
            doubleAnimationX.From = 0;     //设置动画初始值
            doubleAnimationX.To = 10;    //设置动画完成值
            Storyboard.SetTarget(doubleAnimationX, this.Img_Story);     //设置动画操作对象
            Storyboard.SetTargetProperty(doubleAnimationX, new PropertyPath("(Canvas.Left)"));      //设置动画操作对象的属性
            storyboard.Children.Add(doubleAnimationX);      //将动画加载到Storyboard
            
//开始动画
            storyboard.Begin();
        }
    }
}

 

  后台逻辑实现是我回家后自己重新写的,那些代码在公司忘记带回了,如果有问题大家可以留言,我一定尽快改正!

  涉及知识点:Stackpanel、Canvas布局、容器内动态添加元素、遍历页面中的元素、故事板的使用

 

作者:彭海松

出处:http://www.cnblogs.com/haisongvip/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

posted @ 2011-12-23 22:46 彭海松 阅读(1803) 评论(4) 编辑
摘要: 先上实现后的图片: 其中每行中的数据都是绑定的用户控件,拿第一个顶级菜单举例,其中1,1,1,0,0,3代表的六个TextBlock 如下:<TextBlock Text="{Binding Info_class_id, Mode=OneTime}" Height="23" Grid.Column="0" /><TextBlock Text="{Binding Info_class_code, Mode=TwoWay}" Height="23" Grid.Column=&quo阅读全文
posted @ 2011-12-22 21:19 彭海松 阅读(751) 评论(0) 编辑

  今天做Silverlight显示数据的时候,前台DataGrid 做数据绑定显示的时候,需要把数据中的换行去掉,这里根据以前对图片处理的类,构造了一个处理换行的类。

  类代码: 引用接口IValueConverter

  using System;

  using System.Windows.Data;

  namespace 命名空间

  {

    public class ToPercentConverter : IValueConverter

    {

      #region 在载入数据的时候将数据去掉回车符

      public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)

      {

        if (value.ToString().Contains("\r"))

          return value.ToString().Replace("\r", "");

        else

          return value;

      }

      //在页面上操作的时候,将图片类型转换为数据,这里只有在TwoWay的时候才有用

      public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)

      {

        return value.ToString().Replace("\r", ""); } #endregion

      }

    }

  }

  用户控件引用: 首先引用:xmlns:local="clr-namespace:命名空间",然后引用资源: 在需要转换的地方调用Converter={StaticResource ToPercentConverter}如下:

  <sdk:DataGrid Margin="0" Grid.Row="2" BorderThickness="1,0,1,1" d:LayoutOverrides="Width" x:Name="Grid_Data" AutoGenerateColumns="False" HorizontalAlignment="Stretch"  VerticalAlignment="Stretch" GridLinesVisibility="All"  HeadersVisibility="Column" IsEnabled="True" IsReadOnly="True" CanUserReorderColumns="False" FontSize="13.333">

    <sdk:DataGrid.Columns>

      <sdk:DataGridTextColumn Binding="{Binding Description, Mode=TwoWay,ValidatesOnDataErrors=True, Converter={StaticResource ToPercentConverter}}"  Header="信息内容" Width="*"  />

    </sdk:DataGrid.Columns>

  </sdk:DataGrid>

  这里只用一个字段为了大家看得清晰。

  涉及知识点:IValueConverter接口,引用空间,DataGrid绑定数据,绑定数据(OneTime、OneWay、TowWay)方式

  

  作者:彭海松

  出处:http://www.cnblogs.com/haisongvip/

  本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

posted @ 2011-12-21 20:07 彭海松 阅读(1120) 评论(0) 编辑
摘要: 需求:数据库中存在两个表,一个表存信息类别,另一个存放信息信息类别表按级别(level)分主类(0)和子类(1),信息从属子类下(子类主键),用Linq语句实现主类下信息条数和子类下信息条数查询思路:信息属于子类,可以先用分组查询子类下信息的条数,再求和查询主类下子类条数的和。实现:先取得信息类别(Linq查询表,_RMSContainer代表ADO.NET实体数据模型):varInfoClassList=fromAin_RMSContainer.Info_Classselectnew{ A.PK, A.Name, A.Class_Level, A.Parent_PK};计算信息子类的条数(用阅读全文
posted @ 2011-12-20 20:08 彭海松 阅读(1139) 评论(0) 编辑
摘要: 第一次发博文,希望大家支持先看下实现效果:思路:动态加载数据,遍历数据加载到界面,在加载元素的按下事件中,遍历加载到界面的元素,将当前点击元素的前景色设置为白色,并执行创建动画的事件。代码:Xaml代码:容器这里用Canvas<CanvasMargin="11,12,19,0"Width="100"><ImageHeight="21"x:Name="Img_Story"Margin="0"Source="/UserCtrol.VMS;component/Images/阅读全文
posted @ 2011-12-19 20:17 彭海松 阅读(676) 评论(2) 编辑