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并显示在选择框里的,希望可以请教一下更好的方式。

  • 相关阅读:
    web.py利用模板的详细步骤
    Arduino入门笔记(9):蓝牙模块及第一辆蓝牙遥控小车
    Python常用模块之sys
    使用Supervisor管理Linux进程
    Python socket聊天室程序
    Ubuntu 文件文件夹查看权限和设置权限
    python遍历目录
    linux tail命令的使用方法详解
    Python使用openpyxl读写excel文件
    python中enumerate()的用法
  • 原文地址:https://www.cnblogs.com/626498301/p/1858045.html
Copyright © 2011-2022 走看看