zoukankan      html  css  js  c++  java
  • Combox使用的一些技巧

        这些天做一个小型的CMS,也就几张表,用WCF+LINQ2SQL+Silverlight这种方式开发的,对最常用的控件如DataGrid,DataForm以及Toolkit里其它一些控件的用法有了一定的了解,同时参照JV9的教程,把Silverlight里的验证机制仔细的学习了一下,前段时间学习的MVVM框架也派上了用场,感觉用MVVM模式后,客户端的代码维护和分层相对简化了不少。

       今天把自己遇到的Combox中问题整理下:

                   1

       关于项最简单的方式就是直接的加ComboxItem

            ComboBoxItem item = new ComboBoxItem() {Content="财务部",IsSelected=true };
    
            this.comboBox.Items.Add(item);

       用绑定数据源的方式则主要就是一个DisplayMemberPath属性,

           <ComboBox DisplayMemberPath="name"  ItemsSource="{Binding}"/>
    如果数据源是一个Department集合,那么每一个Item都是一个Department,这样的情况下,只能通过

    int deptCode = (this.comboBox.SelectedItem as Departmentt).deptCode;

      这种方式来获取数据的Value,不过网上有人扩展了SelectValuePath的依赖属性,具体的查看这篇文章ComboBox
      通过这种方式只要绑定到SelectValuePath就可以了
       <ComboBox DisplayMemberPath="name"  SelectedValuePath="deptCode"  ItemsSource="{Binding}"/>
       int deptId = this.cmBox.SelectedValue;
      后台直接用这个SelectValue就可以了,比上面的方式方便多了。
      在Sliverlight中,用绑定方式可能与直接的硬编码方式产生的效果不一样:
      ComboBox绑定数据时,无法将传给它的值设为默认值,我尝试了多种方式也没效果,最后只好采取折衷的办法,
             <combo:ComboBoxClassic x:Name="cmBox" DropDownOpened="cmBox_DropDownOpened"/>

       当传一个值为“01,财务部”给ChildWindow中的ComboBox时,我需要将这个值显示在ComboBox上,可以这样做

           this.child.cmBox.Items.Add(new ComboBoxItem { Content=dept.Name,IsSelected=true,Tag=deptId}); 
      这种方式能够保证传过去的值显示在ComboBox中,因为我们是绑定数据源的,所以当用户更改ComboBox内容时可以在DropDownOpen事件里加载记录
              if (this.cmBox.Items.Count == 1)
    
                {
    
                    this.cmBox.Items.Clear();
    
                }
    
                this.cmBox.ItemsSource = null;         
    
                this.cmBox.DisplayMemberPath = "name";
    
                this.cmBox.SelectedValuePath = "deptId";
    
                this.cmBox.ItemsSource =...

        这种方式很讨巧,其实如果用户更改ComboBox内容较频繁时,可以把数据源放在独立存储中,这样每次发生DropDownOpened事件时就不用从服务器获取数据

    不过我感觉这终究不是好的方式,不知道别人是怎么传值给ComboBox并显示在选择框里的,希望可以请教一下更好的方式。

  • 相关阅读:
    Safe Path(bfs+一维数组存图)
    一维树状数组入门
    Ancient Go(简单DFS)
    Sudoku(简单DFS)
    Strategic game(树形DP入门)
    多线程源码分析
    Navicat premium12的破解方法,无需注册码
    MySQL和Oracle的区别
    java Web项目中什么场景中会用到java多线程?
    TCP协议三次握手、四次断开 过程分析
  • 原文地址:https://www.cnblogs.com/626498301/p/1858045.html
Copyright © 2011-2022 走看看