zoukankan      html  css  js  c++  java
  • Silverlight学习笔记第一季(3)扯扯ComboBox

    ComboBox是为了完成这么一个任务:

    以下拉框的形式展现,供你选 择其中的一项。但通常展示给用户看到文字,不是我们直接要操作的数据。

    需求:

    在DataForm中实现添加一个新的帖子。需要一个ComboBox选择他所属的板块。

    效果图:

    问题

    1如何使用ComboBox和DataForm.

    特别是使ComboBox 显示板块名字,选中的值是板块的ID ,又更新到帖子的所属ID。

    2ComboBox无法把选中的值更新到DataForm的数据源?

    解决

    1通过看他的英语应该可以看得懂是什么意思。

    DisplayMemberPath  获取或设置为每个数据项显示的属性的名称或路径。 (ComboBox 显示板块名字)

    SelectedValuePath    获取或设置用于获取 SelectedItem 属性的 SelectedValue 属性的属性路径。

                                  (选中的值是板块的ID)

    SelectedValue    获取或设置通过使用 SelectedValuePath 而获得的选定项的值。  (又更新到帖子的所属ID

    DataForm

    注: Loaded="CB_Section_Loaded" 实现从数据库读取并绑定到控件。这不是本文的重点所以不加细说。

    2

    但是通过方法1    ComboBox无法把选中的值更新到DataForm的数据源。

    即使我添加了如下代码:

    这时候可以为他添加了事件

      SelectionChanged="CB_Section_SelectionChanged"

    private void CB_Section_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
    ComboBox tpcomboBox
    = sender as ComboBox;
    sectionid
    = (int)tpcomboBox.SelectedValue;
    var post
    = dF_Post.CurrentItem as KF_Pic;
    post.SectionID
    = sectionid;
    }

    这样是可以实现的。

    也就在写到这里的时候,我再次检查了代码,发现没有加mode

    于是更改了如下代码:

    SelectedValue="{Binding Path=SectionID,Mode=TwoWay}"

    OK,他自动更新数据源了。原来默认是单向绑定的。。。汗

    思路和实现都有了。

    扩展与疑惑

    1ComboBox有个属性  IsSynchronizedWithCurrentItem

    来自MSDN的解释

    获取或设置指示 Selector 是否应当使 SelectedItem 与 Items 属性中的当前项保持同步的值。 (继承自 Selector。)

    不管我设置的true or false 我更新了数据源或者直接更新了项他都会更新,

    这个我也不太说得清,大家可以试试,或者告诉我下。

    比较愚钝没有看到他到底哪里起作用了。希望知道的朋友不吝赐教,最好给个例子。。。(比较懒)

    下面是我找的一个链接。

    http://www.cnblogs.com/jax/archive/2007/03/29/693359.html

    2#为ComboBox实现SelectedValue属性

    http://www.cnblogs.com/blackcore/archive/2010/04/21/1717655.html

    3也算是题外话 昨天我同学问我一个 jbuilder的一个Java的问题,

    我排错的时候,发现他所有的都是可以去看他的源码的,当时那个感慨啊,

    发现Java和C#的开发思维都有些不同,做JAVA 对于一个不懂的方法 可以跑进去看源码,看他怎么实现的。

    c#却大多不能(想起之前看MVC源码时感觉真的不错。。。),感觉.NET的时候却只能在黑箱外面。。感觉不爽。

    问下,silverlight 的控件开放源码吗?


    作者:撞破南墙
    出处:http://www.cnblogs.com/facingwaller/
    关于作者:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    【English】20190307
    【Teradata】四舍五入函数
    【Teradata】配置PE和AMP(congfig和reconfig工具、vprocmanager)
    【English】20190306
    【Teradata】数据库初始化(sysinit和dip工具)
    【Teradata】日期类型转换
    Optional常用操作
    Stream学习笔记
    拦截Restful API的三种方式
    maven之可执行jar包
  • 原文地址:https://www.cnblogs.com/facingwaller/p/1762426.html
Copyright © 2011-2022 走看看