博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
silverlight:telerik RadControls中RadGridView的一个Bug及解决办法
阅读量:4330 次
发布时间:2019-06-06

本文共 4156 字,大约阅读时间需要 13 分钟。

当RadGridView中嵌套RadComboBox,且RadGridView的高度不够出现滚动条时,上下拉动滚动条后,RadComboBox中的选中值将丢失!

如下图:

滚动条未拖动前

滚动条上下拖动后(注意下图的高亮部分)

重现该Bug的测试代码:

Model层

TextValueObject.cs

namespace RadControlsBug.Model{    public class TextValueObject    {        public string Text { set; get; }        public string Value { set; get; }    }}

  

SexType.cs

namespace RadControlsBug.Model{    public class SexType    {        ///         /// 男        ///         public static string Male = "男";        ///         /// 女        ///         public static string FeMale = "女";    }}

  

SexTypeCollection.cs

using System.Collections.Generic;namespace RadControlsBug.Model{    public static class SexTypeCollection    {        private static List
_items = new List
(); public static List
Items { get { return _items; } set { _items = value; } } static SexTypeCollection() { _items.Add(new TextValueObject() { Text = "男", Value = SexType.Male }); _items.Add(new TextValueObject() { Text = "女", Value = SexType.FeMale }); } }}

  

Person.cs

using System.Collections.Generic;namespace RadControlsBug.Model{    public class Person    {        public string Name { set; get; }        public string Sex { set; get; }        private  List
_sexItems = SexTypeCollection.Items; public List
SexItems { get { return _sexItems; } } }}

  

Company.cs

using System.Collections.ObjectModel;namespace RadControlsBug.Model{    public class Company    {        private ObservableCollection
_employees = new ObservableCollection
(); public ObservableCollection
Employees { get { return _employees; } set { _employees = value; } } public Company() { this._employees.Add(new Person() { Name = "张三", Sex = SexType.Male }); this._employees.Add(new Person() { Name = "李四", Sex = SexType.FeMale }); this._employees.Add(new Person() { Name = "王五", Sex = SexType.Male }); this._employees.Add(new Person() { Name = "赵六", Sex = SexType.FeMale }); this._employees.Add(new Person() { Name = "孙七", Sex = SexType.Male }); this._employees.Add(new Person() { Name = "杨九", Sex = SexType.FeMale }); this._employees.Add(new Person() { Name = "胡十", Sex = SexType.Male }); } }}

  

UI层:

MainPage.Xaml:

  

MainPage.Xaml.cs:

using System.Windows;using System.Windows.Controls;using RadControlsBug.Model;namespace RadControlsBug{    public partial class MainPage : UserControl    {        public MainPage()        {            InitializeComponent();            this.Loaded += new RoutedEventHandler(Page_Loaded);        }        void Page_Loaded(object sender, RoutedEventArgs e)        {            Company _viewModel = new Company();            this.DataContext = _viewModel;                    }            }}

  

该问题曾经困扰我长达2周之久,在也未得到回复。

曾经反复尝试,发现解决方法居然极其简单:

<telerik:RadComboBox ItemsSource="{Binding SexItems,Mode=TwoWay}" SelectedValue="{Binding Sex,Mode=TwoWay}" SelectedValuePath="Value" DisplayMemberPath="Text"/>

改成:

<telerik:RadComboBox  SelectedValue="{Binding Sex,Mode=TwoWay}" SelectedValuePath="Value" DisplayMemberPath="Text" ItemsSource="{Binding SexItems,Mode=TwoWay}"/>

后,问题奇迹般的解决了!

分享于此,希望有助于遇到同样问题的朋友。(个人分析:有可能telerik的开发人员在解析XAML时,判断逻辑依赖于属性出现的顺序导致--胡猜的,我也没去看它的源码)

 

最后谈一下我个人对于Telerik RadControls For Silverlight这套控件的感受,用这套控件做项目开发已经有近3个月的时间,总体感觉还不错,能大幅提高团队的开发效率,官方有详细文档和示例,上手非常容易,而且客观来讲,BUG也比较少(用了3个月,基本上才发现这一个比较诡异的BUG),此外,如果是正版用户,官方还提供源码,并有一年的免费升级期限,每季度官方均会对整套控件做一次升级(主要是修复之前的BUG,以及增加一些新功能)。 从成本上考虑,一套控件的售价9k RMB左右(无Licence数量限制,而且能拿到源码任意修改),国内用户可在慧都控件网上直接购买,对于公司来讲这个成本其实并不高(相比公司招人自己实现这些控件的功能而言,9k多其实可以忽略不计了),如果您的公司打算致力于企业级应用的RIA开发,建议使用。

 

转载于:https://www.cnblogs.com/yjmyzz/archive/2011/12/03/2274977.html

你可能感兴趣的文章
JSP开发模式
查看>>
我的Android进阶之旅------&gt;Android嵌入图像InsetDrawable的使用方法
查看>>
Detours信息泄漏漏洞
查看>>
win32使用拖放文件
查看>>
Android 动态显示和隐藏软键盘
查看>>
raid5什么意思?怎样做raid5?raid5 几块硬盘?
查看>>
【转】how can i build fast
查看>>
null?对象?异常?到底应该如何返回错误信息
查看>>
django登录验证码操作
查看>>
(简单)华为Nova青春 WAS-AL00的USB调试模式在哪里开启的流程
查看>>
图论知识,博客
查看>>
[原创]一篇无关技术的小日记(仅作暂存)
查看>>
20145303刘俊谦 Exp7 网络欺诈技术防范
查看>>
原生和jQuery的ajax用法
查看>>
iOS开发播放文本
查看>>
20145202马超《java》实验5
查看>>
JQuery 事件
查看>>
main(argc,argv[])
查看>>
在线教育工具—白板系统的迭代1——bug监控排查
查看>>
121. Best Time to Buy and Sell Stock
查看>>