以下拉框的形式展现,供你选 择其中的一项。但通常展示给用户看到文字,不是我们直接要操作的数据。
需求:
在DataForm中实现添加一个新的帖子。需要一个ComboBox选择他所属的板块。
效果图:
问题
1如何使用ComboBox和DataForm.
特别是使ComboBox 显示板块名字,选中的值是板块的ID ,又更新到帖子的所属ID。
2ComboBox无法把选中的值更新到DataForm的数据源?
1通过看他的英语应该可以看得懂是什么意思。
displayMemberPath 获取或设置为每个数据项显示的属性的名称或路径。 (ComboBox 显示板块名字)
SelectedValuePath 获取或设置用于获取 SelectedItem 属性的 SelectedValue 属性的属性路径。
(选中的值是板块的ID)
SelectedValue 获取或设置通过使用 SelectedValuePath 而获得的选定项的值。 (又更新到帖子的所属ID)
注: 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 KF_Pic;
post.SectionID sectionid;
}
这样是可以实现的。
也就在写到这里的时候,我再次检查了代码,发现没有加mode
于是更改了如下代码:
思路和实现都有了。
扩展与疑惑
1ComboBox有个属性 IsSynchronizedWithCurrentItem
来自MSDN的解释
获取或设置指示 Selector 是否应当使 SelectedItem 与 Items 属性中的当前项保持同步的值。 (继承自 Selector。)
不管我设置的true or false 我更新了数据源或者直接更新了项他都会更新,
这个我也不太说得清,大家可以试试,或者告诉我下。
比较愚钝没有看到他到底哪里起作用了。希望知道的朋友不吝赐教,最好给个例子。。。(比较懒)
http://www.cnblogs.com/jax/archive/2007/03/29/693359.html
http://www.cnblogs.com/blackcore/archive/2010/04/21/1717655.html
3也算是题外话 昨天我同学问我一个 jbuilder的一个Java的问题,
我排错的时候,发现他所有的都是可以去看他的源码的,当时那个感慨啊,
发现Java和C#的开发思维都有些不同,做JAVA 对于一个不懂的方法 可以跑进去看源码,看他怎么实现的。
c#却大多不能(想起之前看MVC源码时感觉真的不错。。。),感觉.NET的时候却只能在黑箱外面。。感觉不爽。
问下,silverlight 的控件开放源码吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。