<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_菩提树下的杨过.Net</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/31164/rss</id><updated>2012-02-19T01:27:12Z</updated><author><name>菩提树下的杨过</name><uri>http://www.cnblogs.com/yjmyzz/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yjmyzz/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/31164/rss"/><entry><id>http://www.cnblogs.com/yjmyzz/archive/2012/02/14/2351792.html</id><title type="text">silverlight:RadMaskedTextBox设置MaskType=&amp;quot;Numeric&amp;quot;及Mask=&amp;quot;n&amp;quot;时的一个bug</title><summary type="text">telerik的控件总体来说质量还算上乘，但是偶尔也会遇一些小bug:比如 &amp;lt;telerik:RadMaskedTextBox Mask=&amp;quot;n&amp;quot; MaskType=&amp;quot;Numeric&amp;quot;/&amp;gt;，这样的本意是让输入框只能输入带小数位的数字，但是很多用户在输入“零点几”的小数时，通常直接输入&amp;quot;.12&amp;quot;，即：不输入第一个0，直接输入点，这时你会杯具的发现，整个屏幕直接白了(Silverlight应用程序级的错误).我没看telerik的源码，任感觉猜测应该是&amp;quot;.“在Convert成浮点数时抛异常了(老外估计也没想到中国人这么</summary><published>2012-02-14T13:19:00Z</published><updated>2012-02-14T13:19:00Z</updated><author><name>菩提树下的杨过</name><uri>http://www.cnblogs.com/yjmyzz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yjmyzz/archive/2012/02/14/2351792.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yjmyzz/archive/2012/02/14/2351792.html"/><content type="html">&lt;p&gt;telerik的控件总体来说质量还算上乘，但是偶尔也会遇一些小bug:&lt;/p&gt;&#xD;
&lt;p&gt;比如 &amp;lt;telerik:RadMaskedTextBox &lt;span style="color: #ff0000;"&gt;Mask="n" MaskType="Numeric"&lt;/span&gt;&amp;nbsp;/&amp;gt;，这样的本意是让输入框只能输入带小数位的数字，但是很多用户在输入&amp;ldquo;&lt;span style="color: #ff0000;"&gt;零点几&lt;/span&gt;&amp;rdquo;的小数时，通常直接输入"&lt;span style="color: #ff0000;"&gt;.12&lt;/span&gt;"，即：&lt;span style="color: #ff0000;"&gt;不输入第一个0，直接输入点&lt;/span&gt;，这时你会杯具的发现，整个屏幕直接白了(Silverlight应用程序级的错误).&lt;/p&gt;&#xD;
&lt;p&gt;我没看telerik的源码，任感觉猜测应该是&lt;span style="color: #ff0000;"&gt;".&amp;ldquo;&lt;/span&gt;在Convert成浮点数时抛异常了(老外估计也没想到中国人这么懒，呵)，一个简单的解决办法，在KeyDown事件中检测这种特殊情况，如果是只有一个点，就直接赋值为0.00，同时将光标定位到&lt;span style="color: #ff0000;"&gt;&amp;ldquo;.&amp;rdquo;&lt;/span&gt;之后，最后禁止事件继续向上冒泡。&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;private void RadMaskedTextBox_KeyDown(object sender, KeyEventArgs e)&#xD;
        {&#xD;
            var maskedTextBox = (sender as RadMaskedTextBox);&#xD;
            if (maskedTextBox == null) { return; }&#xD;
            if (e.Key == Key.Unknown &amp;amp;&amp;amp; maskedTextBox.Value == null)&#xD;
            {&#xD;
                var extendedtextBox = e.OriginalSource as TextBox;&#xD;
                if (extendedtextBox != null)&#xD;
                {&#xD;
                    extendedtextBox.Text = "0.00";&#xD;
                    extendedtextBox.Select(2, 0);//将光标直接定位到"."之后&#xD;
                }&#xD;
                e.Handled = true;&#xD;
            }&#xD;
        }&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yjmyzz/aggbug/2351792.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yjmyzz/archive/2012/02/14/2351792.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yjmyzz/archive/2012/02/10/2346143.html</id><title type="text">silverlight:贝塞尔曲线</title><summary type="text">Silverlight并没有象flash那样直接提供画线、画圆、画曲线的方法，只能用Path来生成贝塞尔曲线。下面是示例代码：XAML部分：&amp;lt;UserControl x:Class=&amp;quot;SLCurveSample.MainPage&amp;quot; xmlns=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot; xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot; xmlns:d=&amp;quot;http://schemas.m</summary><published>2012-02-10T13:51:00Z</published><updated>2012-02-10T13:51:00Z</updated><author><name>菩提树下的杨过</name><uri>http://www.cnblogs.com/yjmyzz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yjmyzz/archive/2012/02/10/2346143.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yjmyzz/archive/2012/02/10/2346143.html"/><content type="html">&lt;p&gt;Silverlight并没有象flash那样直接提供画线、画圆、画曲线的方法，只能用Path来生成贝塞尔曲线。&lt;/p&gt;&#xD;
&lt;p&gt;下面是示例代码：&lt;/p&gt;&#xD;
&lt;p&gt;XAML部分：&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;&amp;lt;UserControl x:Class="SLCurveSample.MainPage"&#xD;
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&#xD;
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&#xD;
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"&#xD;
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"&#xD;
    mc:Ignorable="d"&#xD;
    d:DesignHeight="400" d:DesignWidth="400"&amp;gt;&#xD;
&#xD;
    &amp;lt;Canvas x:Name="LayoutRoot" Background="White"&amp;gt;&#xD;
        &amp;lt;Ellipse Width="10" Height="10" StrokeThickness="1" Stroke="Red" x:Name="point1"&amp;gt;&amp;lt;/Ellipse&amp;gt;&#xD;
        &amp;lt;TextBlock Text="Left Point" Name="tbLeftPoint" Visibility="Collapsed"&amp;gt;&amp;lt;/TextBlock&amp;gt;&#xD;
        &amp;lt;Ellipse Width="10" Height="10" StrokeThickness="1" Stroke="Red" x:Name="point2"&amp;gt;&amp;lt;/Ellipse&amp;gt;&#xD;
        &amp;lt;TextBlock Text="Right Point" Name="tbRightPoint" Visibility="Collapsed"&amp;gt;&amp;lt;/TextBlock&amp;gt;&#xD;
        &amp;lt;Path Stroke="Red" StrokeThickness="1" x:Name="p" &amp;gt;&#xD;
            &amp;lt;Path.Data&amp;gt;&#xD;
                &amp;lt;PathGeometry&amp;gt;&#xD;
                    &amp;lt;PathGeometry.Figures&amp;gt;&#xD;
                        &amp;lt;PathFigure&amp;gt;&#xD;
                            &amp;lt;PathFigure.Segments&amp;gt;&#xD;
                                &amp;lt;BezierSegment /&amp;gt;                              &#xD;
                            &amp;lt;/PathFigure.Segments&amp;gt;&#xD;
                        &amp;lt;/PathFigure&amp;gt;&#xD;
                    &amp;lt;/PathGeometry.Figures&amp;gt;&#xD;
                &amp;lt;/PathGeometry&amp;gt;&#xD;
            &amp;lt;/Path.Data&amp;gt;&#xD;
        &amp;lt;/Path&amp;gt;&#xD;
    &amp;lt;/Canvas&amp;gt;&#xD;
&amp;lt;/UserControl&amp;gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;Xaml.cs部分：&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;using System;&#xD;
using System.Windows;&#xD;
using System.Windows.Controls;&#xD;
using System.Windows.Input;&#xD;
using System.Windows.Media;&#xD;
&#xD;
namespace SLCurveSample&#xD;
{&#xD;
    public partial class MainPage : UserControl&#xD;
    {&#xD;
        Point _leftPoint = new Point();&#xD;
        Point _rightPoint = new Point();&#xD;
        BezierSegment seg = null;&#xD;
&#xD;
        public MainPage()&#xD;
        {&#xD;
            InitializeComponent();&#xD;
            this.Loaded += PageLoaded;&#xD;
&#xD;
&#xD;
        }&#xD;
&#xD;
&#xD;
&#xD;
        void PageLoaded(object sender, RoutedEventArgs e)&#xD;
        {&#xD;
            this.SizeChanged += PageSizeChanged;&#xD;
            this.MouseMove += PageMouseMove;&#xD;
&#xD;
            this.Loaded -= PageLoaded;&#xD;
        }&#xD;
&#xD;
        void PageMouseMove(object sender, MouseEventArgs e)&#xD;
        {&#xD;
            Point mousePos = e.GetPosition(this);&#xD;
&#xD;
            //根据鼠标的位置对线条粗细、左右圈圈大小做一些交互&#xD;
            double scale = Math.Abs(_leftPoint.Y - mousePos.Y) / _leftPoint.Y;&#xD;
            point1.Width = point1.Height = 10 + 40 * scale;&#xD;
            point2.Width = point2.Height = point1.Width;&#xD;
            p.StrokeThickness = 3 - 2 * scale;&#xD;
&#xD;
            //重绘&#xD;
            Draw();&#xD;
&#xD;
            //计算二个控制点的位置&#xD;
            Point ctlPoint1 = new Point() { X = (mousePos.X + _leftPoint.X) * 0.5, Y = (mousePos.Y + _leftPoint.Y) * 0.5 };&#xD;
            Point ctlPoint2 = new Point() { X = (mousePos.X + _rightPoint.X) * 0.5, Y = (mousePos.Y + _rightPoint.Y) * 0.5 };&#xD;
            if (seg != null)&#xD;
            {&#xD;
                seg.Point1 = ctlPoint1;//贝兹曲线的第一个控制点&#xD;
                seg.Point2 = ctlPoint2;//贝兹曲线的第二个控制点&#xD;
            }&#xD;
&#xD;
&#xD;
&#xD;
&#xD;
&#xD;
        }&#xD;
&#xD;
        void PageSizeChanged(object sender, SizeChangedEventArgs e)&#xD;
        {&#xD;
&#xD;
            Draw();&#xD;
&#xD;
        }&#xD;
&#xD;
        void Draw()&#xD;
        {&#xD;
&#xD;
            double _stageWidth = this.ActualWidth;&#xD;
            double _stageHeight = this.ActualHeight;&#xD;
&#xD;
            double _margin = 80;&#xD;
            //将二个小圈定位于左右二侧&#xD;
            point1.SetValue(Canvas.TopProperty, _stageHeight * 0.5);&#xD;
            point1.SetValue(Canvas.LeftProperty, _margin);&#xD;
&#xD;
            point2.SetValue(Canvas.TopProperty, _stageHeight * 0.5);&#xD;
            point2.SetValue(Canvas.LeftProperty, _stageWidth - _margin);&#xD;
&#xD;
&#xD;
&#xD;
            //计算左侧小圈的中心&#xD;
            _leftPoint.X = (double)point1.GetValue(Canvas.LeftProperty) + point1.Width * 0.5;&#xD;
            _leftPoint.Y = (double)point1.GetValue(Canvas.TopProperty) + point1.Height * 0.5;&#xD;
&#xD;
            tbLeftPoint.SetValue(Canvas.LeftProperty, _leftPoint.X - 20);&#xD;
            tbLeftPoint.SetValue(Canvas.TopProperty, _leftPoint.Y + 10);&#xD;
&#xD;
&#xD;
            //计算右侧小圈的中心&#xD;
            _rightPoint.X = (double)point2.GetValue(Canvas.LeftProperty) + point2.Width * 0.5;&#xD;
            _rightPoint.Y = (double)point2.GetValue(Canvas.TopProperty) + point2.Height * 0.5;&#xD;
&#xD;
            tbRightPoint.SetValue(Canvas.LeftProperty, _rightPoint.X - 20);&#xD;
            tbRightPoint.SetValue(Canvas.TopProperty, _rightPoint.Y + 10);&#xD;
&#xD;
            PathFigure figure = (p.Data as PathGeometry).Figures[0];&#xD;
            figure.StartPoint = _leftPoint;//设置(贝兹曲线的)起点&#xD;
&#xD;
            seg = figure.Segments[0] as BezierSegment;&#xD;
            seg.Point3 = _rightPoint;//贝兹曲线的终点&#xD;
&#xD;
&#xD;
        }&#xD;
    }&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;以上的代码，先在Canvas中放置了一段Path，然后在后台去动态修改贝塞尔曲线的控制点，并加入了与鼠标的一些简单交互。更详细的原理也可参见我之前记录的&lt;a id="cb_post_title_url"  href="http://www.cnblogs.com/yjmyzz/archive/2010/04/01/1702576.html" target="_blank"&gt;Flash/Flex学习笔记(20)：贝塞尔曲线&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;运行截图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/27612/2012021021530758.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/27612/2012021021532673.png" alt="" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yjmyzz/aggbug/2346143.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yjmyzz/archive/2012/02/10/2346143.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yjmyzz/archive/2012/01/16/2323412.html</id><title type="text">vs2010智能提示消失的解决办法</title><summary type="text">前一阵时间安装了ReSharper插件，后来发现运行太卡，于是卸掉了，然后...vs2010就杯具的发现木有智能提示了，解决办法：进入vs2010命名行模式下：（程序-&amp;gt;Microsoft Visual Studio 2010-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio Command Prompt (2010)）C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC&amp;gt;devenv.exe /setup /resetuserdata /resetsettings</summary><published>2012-01-16T03:18:00Z</published><updated>2012-01-16T03:18:00Z</updated><author><name>菩提树下的杨过</name><uri>http://www.cnblogs.com/yjmyzz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yjmyzz/archive/2012/01/16/2323412.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yjmyzz/archive/2012/01/16/2323412.html"/><content type="html">&lt;p&gt;前一阵时间安装了ReSharper插件，后来发现运行太卡，于是卸掉了，然后...vs2010就杯具的发现木有智能提示了，解决办法：&lt;/p&gt;&#xD;
&lt;p&gt;进入vs2010命名行模式下：（程序-&amp;gt;Microsoft Visual Studio 2010-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio Command Prompt (2010)）&lt;/p&gt;&#xD;
&lt;p&gt;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC&amp;gt;&lt;span style="color: #ff0000;"&gt;devenv.exe /setup /resetuserdata /resetsettings&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yjmyzz/aggbug/2323412.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yjmyzz/archive/2012/01/16/2323412.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yjmyzz/archive/2012/01/09/2316892.html</id><title type="text">打印常识：A4纸张在显示器上应该要多少像素?</title><summary type="text">A4纸的尺寸是210mm*297mm，也就是21.0cm*29.7cm，而1英寸=2.54cm，如果屏幕DPI分辨率为72像素/英寸，换算一下：相当于1cm可呈现 (72px/2.54cm) = 28.34px下面是一些常用分辨率下A4纸在屏幕上的像素尺寸：分辨率是72像素/英寸时，A4纸的尺寸的图像的像素是595&amp;#215;842；分辨率是96像素/英寸时，A4纸的尺寸的图像的像素是794&amp;#215;1123；(默认)分辨率是120像素/英寸时，A4纸的尺寸的图像的像素是1487&amp;#215;2105；分辨率是150像素/英寸时，A4纸的尺寸的图像的像素是1240&amp;#215;1754；分辨率是</summary><published>2012-01-09T03:07:00Z</published><updated>2012-01-09T03:07:00Z</updated><author><name>菩提树下的杨过</name><uri>http://www.cnblogs.com/yjmyzz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yjmyzz/archive/2012/01/09/2316892.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yjmyzz/archive/2012/01/09/2316892.html"/><content type="html">&lt;p&gt;A4纸的尺寸是210mm*297mm，也就是21.0cm*29.7cm，而1英寸=2.54cm，如果屏幕DPI分辨率为72像素/英寸，换算一下：相当于1cm可呈现 (72px/2.54cm) = 28.34px&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;下面是一些常用分辨率下A4纸在屏幕上的像素尺寸：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;分辨率是72像素/英寸时，A4纸的尺寸的图像的像素是595&amp;times;842；&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #ff0000;"&gt;分辨率是96像素/英寸时，A4纸的尺寸的图像的像素是794&amp;times;1123；(默认)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;分辨率是120像素/英寸时，A4纸的尺寸的图像的像素是1487&amp;times;2105；&lt;/p&gt;&#xD;
&lt;p&gt;分辨率是150像素/英寸时，A4纸的尺寸的图像的像素是1240&amp;times;1754；&lt;/p&gt;&#xD;
&lt;p&gt;分辨率是300像素/英寸时，A4纸的尺寸的图像的像素是2480&amp;times;3508；&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;其他的大小，一般标准印刷300dpi时：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;A4纸的尺寸的图像的像素是2480&amp;times;3508；&lt;/p&gt;&#xD;
&lt;p&gt;A3纸的尺寸的图像的像素是4960&amp;times;3508；&lt;/p&gt;&#xD;
&lt;p&gt;B3纸的尺寸的图像的像素是3248&amp;times;4300；&lt;/p&gt;&#xD;
&lt;p&gt;B4纸的尺寸的图像的像素是3248&amp;times;2150。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;注：win7环境下如何查看自己显示器的DPI，见下图&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/27612/2012010911294193.jpg" alt="" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yjmyzz/aggbug/2316892.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yjmyzz/archive/2012/01/09/2316892.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yjmyzz/archive/2012/01/05/2313657.html</id><title type="text">iFrame/Frame嵌入Silverlight时自适应高度的处理</title><summary type="text">iFrame如果嵌入的是普通网页，这种场景下的iframe高度自适应解决方案，百度一下随手都能找到一大把。但是嵌入Silvelight时，嵌入iframe的父页面默认不知道Silverlight内容的真实高度，所以上述办法就不起作用了。其实只要换个思路：既然父页面不知道iframe中SL的高度，SL难道不能自己主动向父页面汇报自已的高度吗？先看最终的效果：注:Page1,Page3均是SL中的UserControl代码见下面的源代码：主要步骤为1、SL在每个页面的Page_Loaded中，通过与父页面的js交互，主动报告当前SL页面的高度2、父页面得到高度后，用js动态调整iFrame/Fra</summary><published>2012-01-05T13:34:00Z</published><updated>2012-01-05T13:34:00Z</updated><author><name>菩提树下的杨过</name><uri>http://www.cnblogs.com/yjmyzz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yjmyzz/archive/2012/01/05/2313657.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yjmyzz/archive/2012/01/05/2313657.html"/><content type="html">&lt;p&gt;iFrame如果嵌入的是普通网页，这种场景下的iframe高度自适应解决方案，百度一下随手都能找到一大把。&lt;/p&gt;&#xD;
&lt;p&gt;但是嵌入Silvelight时，嵌入iframe的父页面默认&lt;span style="color: #ff0000;"&gt;不知道&lt;/span&gt;Silverlight内容的真实高度，所以上述办法就不起作用了。&lt;/p&gt;&#xD;
&lt;p&gt;其实只要换个思路：既然父页面不知道iframe中SL的高度，SL难道不能自己主动向父页面汇报自已的高度吗？&lt;/p&gt;&#xD;
&lt;p&gt;先看最终的效果：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/27612/2012010521280162.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/27612/2012010521283184.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/27612/2012010521285569.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;注:Page1,Page3均是SL中的UserControl&lt;/p&gt;&#xD;
&lt;p&gt;代码见下面的源代码：&lt;/p&gt;&#xD;
&lt;p&gt;主要步骤为&lt;/p&gt;&#xD;
&lt;p&gt;1、SL在每个页面的Page_Loaded中，通过与父页面的js交互，主动报告当前SL页面的高度&lt;/p&gt;&#xD;
&lt;p&gt;2、父页面得到高度后，用js动态调整iFrame/Frame的高度&lt;/p&gt;&#xD;
&lt;p&gt;示例源代码：&lt;a href="http://files.cnblogs.com/yjmyzz/SL_Iframe_Height_Sample.7z"&gt;http://files.cnblogs.com/yjmyzz/SL_Iframe_Height_Sample.7z&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yjmyzz/aggbug/2313657.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yjmyzz/archive/2012/01/05/2313657.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yjmyzz/archive/2012/01/02/2310245.html</id><title type="text">silverlight:ScrollViewer的各种高度研究</title><summary type="text">直接给码:&amp;lt;UserControl x:Class=&amp;quot;SilverlightApplication1.MainPage&amp;quot; xmlns=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot; xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot; xmlns:d=&amp;quot;http://schemas.microsoft.com/expression/blend/2008&amp;quot; xmlns:mc=&amp;quot</summary><published>2012-01-02T08:47:00Z</published><updated>2012-01-02T08:47:00Z</updated><author><name>菩提树下的杨过</name><uri>http://www.cnblogs.com/yjmyzz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yjmyzz/archive/2012/01/02/2310245.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yjmyzz/archive/2012/01/02/2310245.html"/><content type="html">&lt;p&gt;直接给码:&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;&amp;lt;UserControl x:Class="SilverlightApplication1.MainPage"&#xD;
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&#xD;
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&#xD;
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"&#xD;
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"&#xD;
    mc:Ignorable="d"&#xD;
    Width="640" Height="300"&amp;gt;&#xD;
&#xD;
    &amp;lt;Grid x:Name="LayoutRoot" Background="LightBlue"&amp;gt;&#xD;
        &amp;lt;Grid.RowDefinitions&amp;gt;&#xD;
            &amp;lt;RowDefinition&amp;gt;&amp;lt;/RowDefinition&amp;gt;&#xD;
            &amp;lt;RowDefinition Height="Auto" MinHeight="30"&amp;gt;&amp;lt;/RowDefinition&amp;gt;&#xD;
        &amp;lt;/Grid.RowDefinitions&amp;gt;&#xD;
        &amp;lt;ScrollViewer Name="sv" VerticalScrollBarVisibility="Visible" LostMouseCapture="sv_LostMouseCapture"&amp;gt;&#xD;
            &amp;lt;Border Background="Azure" BorderBrush="Black" Margin="5" BorderThickness="1" Height="400"&amp;gt;&amp;lt;/Border&amp;gt;&#xD;
        &amp;lt;/ScrollViewer&amp;gt;&#xD;
        &amp;lt;StackPanel Grid.Row="1" VerticalAlignment="Center" Orientation="Horizontal" HorizontalAlignment="Center"&amp;gt;&#xD;
            &amp;lt;Button Content="Test" Click="Button_Click" HorizontalAlignment="Center" Padding="10,0"&amp;gt;&amp;lt;/Button&amp;gt;&#xD;
            &amp;lt;TextBlock x:Name="tb1" Margin="10,0,0,0"&amp;gt;&amp;lt;/TextBlock&amp;gt;&#xD;
        &amp;lt;/StackPanel&amp;gt;&#xD;
    &amp;lt;/Grid&amp;gt;&#xD;
&amp;lt;/UserControl&amp;gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;cs部分：&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;using System.Windows;&#xD;
using System.Windows.Controls;&#xD;
&#xD;
namespace SilverlightApplication1&#xD;
{&#xD;
    public partial class MainPage : UserControl&#xD;
    {&#xD;
        public MainPage()&#xD;
        {&#xD;
            InitializeComponent();&#xD;
        }&#xD;
&#xD;
        private void Button_Click(object sender, RoutedEventArgs e)&#xD;
        {&#xD;
&#xD;
            ShowHeight();&#xD;
        }&#xD;
&#xD;
        private void sv_LostMouseCapture(object sender, System.Windows.Input.MouseEventArgs e)&#xD;
        {&#xD;
            ShowHeight();&#xD;
        }&#xD;
&#xD;
        void ShowHeight()&#xD;
        {&#xD;
            tb1.Text = string.Format("ActualHeight:{0},VerticalOffset:{1},ViewportHeight:{2},ExtentHeight:{3}", sv.ActualHeight, sv.VerticalOffset, sv.ViewportHeight, sv.ExtentHeight);&#xD;
        }&#xD;
    }&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;运行结果截图：（已经在图上直接加了注释）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/27612/2012010216455560.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #ff0000;"&gt;注：ExtentHeight只能在LostMouseCapture事件中才能正确获得。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yjmyzz/aggbug/2310245.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yjmyzz/archive/2012/01/02/2310245.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yjmyzz/archive/2011/12/31/2308664.html</id><title type="text">silverlight:telerik RadControls for Silverlight 主题使用心得</title><summary type="text">默认情况下： telerik RadControls控件使用的是Office Black 主题，就算在App.xaml.cs里写上StyleManager.ApplicationTheme = new Windows7Theme(); 在blend中，看到的仍然是Office Black主题，如果想在设计期就看到某种主题风格，有一个简单的办法：找到telerik radcontrols安装目录，会看到以下目录：X:\Program Files (x86)\Telerik\RadControls for Silverlight Q2 2011 SP1\Themes进入需要的&amp;quot;主题&amp;qu</summary><published>2011-12-31T05:48:00Z</published><updated>2011-12-31T05:48:00Z</updated><author><name>菩提树下的杨过</name><uri>http://www.cnblogs.com/yjmyzz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yjmyzz/archive/2011/12/31/2308664.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yjmyzz/archive/2011/12/31/2308664.html"/><content type="html">&lt;p&gt;默认情况下： telerik RadControls控件使用的是Office Black 主题，就算在App.xaml.cs里写上&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;StyleManager.ApplicationTheme = new Windows7Theme();&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;在blend中，看到的仍然是Office Black主题，如果想在设计期就看到某种主题风格，有一个简单的办法：&lt;/p&gt;&#xD;
&lt;p&gt;找到telerik radcontrols安装目录，会看到以下目录：&lt;/p&gt;&#xD;
&lt;p&gt;X:\Program Files (x86)\Telerik\RadControls for Silverlight Q2 2011 SP1\Themes&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/27612/2011123113331836.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;进入需要的"主题"目录中（比如Windows7），把需要的控件(比如Button)对应的xaml文件&lt;/p&gt;&#xD;
&lt;p&gt;X:\Program Files (x86)\Telerik\RadControls for Silverlight Q2 2011 SP1\Themes\Windows7\Themes\Windows7\Button.xaml&lt;/p&gt;&#xD;
&lt;p&gt;复制到项目中，然后用Blend打开，在资源面板中，选择app.xaml，右击--&amp;gt;链接到资源字典--&amp;gt;Button.xaml&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/27612/2011123113461461.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;保存完成后，向页面里拖放一个RadButton，立即就能看到变成了Windows7的风格&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/27612/2011123113472951.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;如果要修改Button Windows7的默认样式，直接在资源面析中修改Button.xaml即可&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/27612/2011123114374916.jpg" alt="" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yjmyzz/aggbug/2308664.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yjmyzz/archive/2011/12/31/2308664.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yjmyzz/archive/2011/12/24/2300571.html</id><title type="text">Silvelright:ListBox无法用Tab顺序切换内部元素焦点的解决</title><summary type="text">默认情况下，Silverlight自带的ListBox控件如果内部有多个TextBox，用户无法用键盘上的Tab键，在ListBox内部的TextBox之间切换。但Teterik RadControls 中的telerik:ListBox却很好的解决了这个问题，只要把telerik:ListBox的IsTabStop设置成false，同时把TabNavigation设置成Local即可(而SL自带的ListBox就算设置了这二个属性，Tab键需要按二次才能切换焦点)完整Xaml代码：&amp;lt;UserControl xmlns=&amp;quot;http://schemas.microsoft.com</summary><published>2011-12-24T10:32:00Z</published><updated>2011-12-24T10:32:00Z</updated><author><name>菩提树下的杨过</name><uri>http://www.cnblogs.com/yjmyzz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yjmyzz/archive/2011/12/24/2300571.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yjmyzz/archive/2011/12/24/2300571.html"/><content type="html">&lt;p&gt;默认情况下，Silverlight自带的ListBox控件如果内部有多个TextBox，用户无法用键盘上的Tab键，在ListBox内部的TextBox之间切换。但Teterik RadControls 中的telerik:ListBox却很好的解决了这个问题，只要把telerik:ListBox的&lt;span style="color: #ff0000;"&gt;IsTabStop设置成false&lt;/span&gt;，同时把&lt;span style="color: #ff0000;"&gt;TabNavigation设置成Local&lt;/span&gt;即可(而SL自带的ListBox就算设置了这二个属性，Tab键需要按二次才能切换焦点)&lt;/p&gt;&#xD;
&lt;p&gt;完整Xaml代码：&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;&amp;lt;UserControl&#xD;
		xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" &#xD;
		xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&#xD;
		xmlns:d="http://schemas.microsoft.com/expression/blend/2008" &#xD;
		xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"&#xD;
		xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"&#xD;
		xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" x:Class="List_Focus_Sample.MainPage"&#xD;
		mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480"&amp;gt;&#xD;
    &amp;lt;Grid x:Name="LayoutRoot"&amp;gt;&#xD;
        &amp;lt;Grid.RowDefinitions&amp;gt;&#xD;
            &amp;lt;RowDefinition Height="35"/&amp;gt;&#xD;
            &amp;lt;RowDefinition Height="Auto"/&amp;gt;&#xD;
            &amp;lt;RowDefinition Height="35"/&amp;gt;&#xD;
            &amp;lt;RowDefinition Height="Auto"/&amp;gt;&#xD;
            &amp;lt;RowDefinition Height="35"/&amp;gt;&#xD;
        &amp;lt;/Grid.RowDefinitions&amp;gt;&#xD;
    &#xD;
        &amp;lt;TextBox Text="下面是Silverlight自带的ListBox" HorizontalAlignment="Center" VerticalAlignment="Center"/&amp;gt;&#xD;
        &#xD;
        &amp;lt;ListBox Grid.Row="1"  IsTabStop="False" ItemsSource="{Binding ListCode, Mode=TwoWay}" BorderThickness="0" HorizontalAlignment="Center" VerticalAlignment="Center"&amp;gt;&#xD;
            &amp;lt;ListBox.ItemTemplate&amp;gt;&#xD;
                &amp;lt;DataTemplate&amp;gt;&#xD;
                    &amp;lt;TextBox Text="{Binding Text, Mode=TwoWay}" Width="150" Margin="5" BorderThickness="3"/&amp;gt;&#xD;
                &amp;lt;/DataTemplate&amp;gt;&#xD;
            &amp;lt;/ListBox.ItemTemplate&amp;gt;&#xD;
            &amp;lt;ListBox.ItemsPanel&amp;gt;&#xD;
                &amp;lt;ItemsPanelTemplate&amp;gt;&#xD;
                    &amp;lt;StackPanel Orientation="Horizontal" Margin="10"/&amp;gt;&#xD;
                &amp;lt;/ItemsPanelTemplate&amp;gt;&#xD;
            &amp;lt;/ListBox.ItemsPanel&amp;gt;&#xD;
            &amp;lt;ListBox.ItemContainerStyle&amp;gt;&#xD;
                &amp;lt;Style TargetType="ListBoxItem"&amp;gt;&#xD;
                    &amp;lt;Setter Property="Template"&amp;gt;&#xD;
                        &amp;lt;Setter.Value&amp;gt;&#xD;
                            &amp;lt;ControlTemplate TargetType="ListBoxItem"&amp;gt;&#xD;
                                &amp;lt;ContentPresenter Content="{TemplateBinding Content}"/&amp;gt;&#xD;
                            &amp;lt;/ControlTemplate&amp;gt;&#xD;
                        &amp;lt;/Setter.Value&amp;gt;&#xD;
                    &amp;lt;/Setter&amp;gt;&#xD;
                &amp;lt;/Style&amp;gt;&#xD;
            &amp;lt;/ListBox.ItemContainerStyle&amp;gt;&#xD;
            &amp;lt;i:Interaction.Behaviors&amp;gt;&#xD;
                &amp;lt;ei:MouseDragElementBehavior/&amp;gt;&#xD;
            &amp;lt;/i:Interaction.Behaviors&amp;gt;&#xD;
        &amp;lt;/ListBox&amp;gt;&#xD;
&#xD;
        &amp;lt;TextBox Grid.Row="2" Text="下面是Telerik RadControls提供的ListBox" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="208,0,208,6"/&amp;gt;&#xD;
        &#xD;
        &amp;lt;telerik:ListBox  TabNavigation="Local" IsTabStop="False" Grid.Row="3" ItemsSource="{Binding ListCode, Mode=TwoWay}"  HorizontalAlignment="Center" VerticalAlignment="Center"&amp;gt;&#xD;
            &amp;lt;telerik:ListBox.ItemTemplate&amp;gt;&#xD;
                &amp;lt;DataTemplate&amp;gt;&#xD;
                    &amp;lt;TextBox Text="{Binding Text, Mode=TwoWay}" Width="150" Margin="5" BorderThickness="3"/&amp;gt;&#xD;
                &amp;lt;/DataTemplate&amp;gt;&#xD;
            &amp;lt;/telerik:ListBox.ItemTemplate&amp;gt;&#xD;
            &amp;lt;telerik:ListBox.ItemsPanel&amp;gt;&#xD;
                &amp;lt;ItemsPanelTemplate&amp;gt;&#xD;
                    &amp;lt;StackPanel Orientation="Horizontal" Margin="10"/&amp;gt;&#xD;
                &amp;lt;/ItemsPanelTemplate&amp;gt;&#xD;
            &amp;lt;/telerik:ListBox.ItemsPanel&amp;gt;&#xD;
        &#xD;
        	&amp;lt;i:Interaction.Behaviors&amp;gt;&#xD;
        		&amp;lt;ei:MouseDragElementBehavior/&amp;gt;&#xD;
        	&amp;lt;/i:Interaction.Behaviors&amp;gt;&#xD;
        &amp;lt;/telerik:ListBox&amp;gt;&#xD;
&#xD;
        &amp;lt;TextBox Text="Telerik又一次展示了它给力的一面" Grid.Row="4" HorizontalAlignment="Center" VerticalAlignment="Center"/&amp;gt;&#xD;
    &amp;lt;/Grid&amp;gt;&#xD;
&amp;lt;/UserControl&amp;gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;意外惊喜：之前写过一篇&lt;a href="http://www.cnblogs.com/yjmyzz/archive/2011/08/16/2140106.html" target="_blank"&gt;博文&lt;/a&gt;，讲述了 Silverlight自带的ListBox，无法应用Blend中的MouseDragElementBehavior(即：应用该行为仍然无法拖动ListBox)，但是telerik:ListBox发现居然可以（本例中，用鼠标按住telerik:ListBox中的任一文本框的边框，即可拖动整个ListBox）--商业控件就是给力！&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yjmyzz/aggbug/2300571.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yjmyzz/archive/2011/12/24/2300571.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yjmyzz/archive/2011/12/16/2289725.html</id><title type="text">javascript:json数据的页面绑定</title><summary type="text">web开发中，如果需要将“服务端返回的json对象”绑定到“现有页面上的dom元素”，传统赋值的方式太繁琐，写起来也很累(特别是json对象很大时)，于是想出了下面的偷懒方法，不过有二个前提：1、元素的id要与json对象中的属性命名一致2、json对象中的属性名，最好不要重复&amp;lt;!doctype html&amp;gt;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;json对象遍历演示&amp;lt;/title&amp;gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;var obj = {a:&amp;#39;a1&amp;#39;,b:&amp;#39</summary><published>2011-12-16T00:40:00Z</published><updated>2011-12-16T00:40:00Z</updated><author><name>菩提树下的杨过</name><uri>http://www.cnblogs.com/yjmyzz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yjmyzz/archive/2011/12/16/2289725.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yjmyzz/archive/2011/12/16/2289725.html"/><content type="html">&lt;p&gt;web开发中，如果需要将&amp;ldquo;服务端返回的json对象&amp;rdquo;绑定到&amp;ldquo;现有页面上的dom元素&amp;rdquo;，传统赋值的方式太繁琐，写起来也很累(特别是json对象很大时)，于是想出了下面的偷懒方法，不过有二个前提：&lt;/p&gt;&#xD;
&lt;p&gt;1、元素的id要与json对象中的属性命名一致&lt;/p&gt;&#xD;
&lt;p&gt;2、json对象中的属性名，最好不要重复&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;&amp;lt;!doctype html&amp;gt;&#xD;
&amp;lt;html&amp;gt;&#xD;
&amp;lt;head&amp;gt;&#xD;
&amp;lt;title&amp;gt;json对象遍历演示&amp;lt;/title&amp;gt;&#xD;
&amp;lt;script type="text/javascript"&amp;gt;&#xD;
var obj = {a:'a1',b:'b1',c:{c1:'c1'},d:1,e:true,f:new Date("2012/12/24")};&#xD;
&#xD;
&#xD;
//showJsonProperty(obj);&#xD;
&#xD;
/*&#xD;
function showJsonProperty(jsonObj){&#xD;
	for(var o in jsonObj){		&#xD;
		alert("属性名：" + o.toString() + "，值：" + jsonObj[o].toString() + "，type：" + typeof(jsonObj[o]) );	&#xD;
		if (typeof(jsonObj[o])=="object")&#xD;
		{&#xD;
			showJsonProperty(jsonObj[o]);&#xD;
		}		&#xD;
	}&#xD;
}&#xD;
*/&#xD;
&#xD;
&#xD;
function bindJson(jsonObj){&#xD;
	for(var o in jsonObj){	&#xD;
		var domObj = document.getElementById(o.toString());&#xD;
		if (domObj!=undefined){&#xD;
			domObj.value=jsonObj[o].toString();&#xD;
		}		&#xD;
		if (typeof(jsonObj[o])=="object")&#xD;
		{&#xD;
			bindJson(jsonObj[o]);&#xD;
		}		&#xD;
	}&#xD;
}&#xD;
&#xD;
function bindData(){	&#xD;
	bindJson(obj);&#xD;
}&#xD;
&amp;lt;/script&amp;gt;&#xD;
&amp;lt;style type="text/css"&amp;gt;&#xD;
	input{width:80px;height:18px;margin:0 10px 0 0;border:1px #999 solid}&#xD;
	input:hover{border:1px #ff0000 solid}&#xD;
	input[type=button]{background-color:#efefef;height:22px;}&#xD;
&amp;lt;/style&amp;gt;&#xD;
&amp;lt;/head&amp;gt;&#xD;
&amp;lt;body&amp;gt;&#xD;
	&amp;lt;div&amp;gt;&#xD;
		a:&#xD;
		&amp;lt;input id="a" /&amp;gt;&#xD;
		b:&#xD;
		&amp;lt;input id="b" /&amp;gt;&#xD;
		c.c1:&#xD;
		&amp;lt;input id="c1" /&amp;gt;&#xD;
		d:&#xD;
		&amp;lt;input id="d" /&amp;gt;&#xD;
		e:&#xD;
		&amp;lt;input id="e" /&amp;gt;&#xD;
		f:&#xD;
		&amp;lt;input id="f" /&amp;gt;&#xD;
		&amp;lt;input type="button" value="绑定" id="btnBind" onclick="bindData()"/&amp;gt;&#xD;
	&amp;lt;/div&amp;gt;&#xD;
&amp;lt;/body&amp;gt;&#xD;
&amp;lt;/html&amp;gt;&#xD;
&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yjmyzz/aggbug/2289725.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yjmyzz/archive/2011/12/16/2289725.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yjmyzz/archive/2011/12/03/2274977.html</id><title type="text">silverlight:telerik RadControls中RadGridView的一个Bug及解决办法</title><summary type="text">当RadGridView中嵌套RadComboBox，且RadGridView的高度不够出现滚动条时，上下拉动滚动条后，RadComboBox中的选中值将丢失！如下图：滚动条未拖动前滚动条上下拖动后(注意下图的高亮部分)重现该Bug的测试代码：Model层TextValueObject.csnamespace RadControlsBug.Model{ public class TextValueObject { public string Text { set; get; } public string Value { set; get; } }...</summary><published>2011-12-03T13:26:00Z</published><updated>2011-12-03T13:26:00Z</updated><author><name>菩提树下的杨过</name><uri>http://www.cnblogs.com/yjmyzz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yjmyzz/archive/2011/12/03/2274977.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yjmyzz/archive/2011/12/03/2274977.html"/><content type="html">&lt;p&gt;当RadGridView中嵌套RadComboBox，且RadGridView的高度不够出现滚动条时，上下拉动滚动条后，RadComboBox中的选中值将丢失！&lt;/p&gt;&#xD;
&lt;p&gt;如下图：&lt;/p&gt;&#xD;
&lt;p&gt;滚动条未拖动前&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/27612/2011120321115494.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;滚动条上下拖动后(注意下图的高亮部分)&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/27612/2011120321121287.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;重现该Bug的测试代码：&lt;/p&gt;&#xD;
&lt;p&gt;Model层&lt;/p&gt;&#xD;
&lt;p&gt;TextValueObject.cs&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;namespace RadControlsBug.Model&#xD;
{&#xD;
    public class TextValueObject&#xD;
    {&#xD;
        public string Text { set; get; }&#xD;
&#xD;
        public string Value { set; get; }&#xD;
    }&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;SexType.cs&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;namespace RadControlsBug.Model&#xD;
{&#xD;
    public class SexType&#xD;
    {&#xD;
        /// &amp;lt;summary&amp;gt;&#xD;
        /// 男&#xD;
        /// &amp;lt;/summary&amp;gt;&#xD;
        public static string Male = "男";&#xD;
&#xD;
        /// &amp;lt;summary&amp;gt;&#xD;
        /// 女&#xD;
        /// &amp;lt;/summary&amp;gt;&#xD;
        public static string FeMale = "女";&#xD;
    }&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;SexTypeCollection.cs&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;using System.Collections.Generic;&#xD;
&#xD;
namespace RadControlsBug.Model&#xD;
{&#xD;
    public static class SexTypeCollection&#xD;
    {&#xD;
        private static List&amp;lt;TextValueObject&amp;gt; _items = new List&amp;lt;TextValueObject&amp;gt;();&#xD;
&#xD;
        public static List&amp;lt;TextValueObject&amp;gt; Items&#xD;
        {&#xD;
            get { return _items; }&#xD;
            set { _items = value; }&#xD;
        }&#xD;
&#xD;
        static SexTypeCollection() &#xD;
        {&#xD;
            _items.Add(new TextValueObject() { Text = "男", Value = SexType.Male });&#xD;
            _items.Add(new TextValueObject() { Text = "女", Value = SexType.FeMale });&#xD;
        }&#xD;
    }&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Person.cs&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;using System.Collections.Generic;&#xD;
&#xD;
namespace RadControlsBug.Model&#xD;
{&#xD;
    public class Person&#xD;
    {&#xD;
        public string Name { set; get; }&#xD;
&#xD;
        public string Sex { set; get; }&#xD;
&#xD;
        private  List&amp;lt;TextValueObject&amp;gt; _sexItems = SexTypeCollection.Items;&#xD;
&#xD;
        public List&amp;lt;TextValueObject&amp;gt; SexItems { get { return _sexItems; } }&#xD;
&#xD;
    }&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Company.cs&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;using System.Collections.ObjectModel;&#xD;
&#xD;
namespace RadControlsBug.Model&#xD;
{&#xD;
    public class Company&#xD;
    {&#xD;
        private ObservableCollection&amp;lt;Person&amp;gt; _employees = new ObservableCollection&amp;lt;Person&amp;gt;();&#xD;
&#xD;
        public ObservableCollection&amp;lt;Person&amp;gt; Employees&#xD;
        {&#xD;
            get { return _employees; }&#xD;
            set { _employees = value; }&#xD;
        }&#xD;
&#xD;
&#xD;
        public Company() &#xD;
        {&#xD;
            this._employees.Add(new Person() { Name = "张三", Sex = SexType.Male });&#xD;
            this._employees.Add(new Person() { Name = "李四", Sex = SexType.FeMale });&#xD;
            this._employees.Add(new Person() { Name = "王五", Sex = SexType.Male });&#xD;
            this._employees.Add(new Person() { Name = "赵六", Sex = SexType.FeMale });&#xD;
            this._employees.Add(new Person() { Name = "孙七", Sex = SexType.Male });&#xD;
            this._employees.Add(new Person() { Name = "杨九", Sex = SexType.FeMale });&#xD;
            this._employees.Add(new Person() { Name = "胡十", Sex = SexType.Male });&#xD;
        }&#xD;
&#xD;
    }&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;UI层：&lt;/p&gt;&#xD;
&lt;p&gt;MainPage.Xaml:&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;&amp;lt;UserControl x:Class="RadControlsBug.MainPage"&#xD;
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&#xD;
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&#xD;
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"&#xD;
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"&#xD;
    xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"&#xD;
    mc:Ignorable="d"&#xD;
    d:DesignHeight="300" d:DesignWidth="400"&amp;gt;&#xD;
&#xD;
    &amp;lt;Grid x:Name="LayoutRoot" Background="White"&amp;gt;&#xD;
        &amp;lt;StackPanel VerticalAlignment="Center" HorizontalAlignment="Center"&amp;gt;&#xD;
            &amp;lt;telerik:RadGridView ShowGroupPanel="False" RowIndicatorVisibility="Collapsed" CanUserFreezeColumns="False" AutoGenerateColumns="False" ItemsSource="{Binding Employees,Mode=TwoWay}" Width="300" Height="120" Name="gridView1"&amp;gt;&#xD;
                &amp;lt;telerik:RadGridView.Columns&amp;gt;&#xD;
                    &amp;lt;telerik:GridViewColumn   Header="姓名" Width="80" &amp;gt;&#xD;
                        &amp;lt;telerik:GridViewColumn.CellTemplate&amp;gt;&#xD;
                            &amp;lt;DataTemplate&amp;gt;&#xD;
                                &amp;lt;telerik:RadMaskedTextBox Value="{Binding Name,Mode=TwoWay}" MaskType="None"&amp;gt;&amp;lt;/telerik:RadMaskedTextBox&amp;gt;&#xD;
                            &amp;lt;/DataTemplate&amp;gt;&#xD;
                        &amp;lt;/telerik:GridViewColumn.CellTemplate&amp;gt;&#xD;
                    &amp;lt;/telerik:GridViewColumn&amp;gt;&#xD;
                    &amp;lt;telerik:GridViewColumn   Header="性别" Width="80" &amp;gt;&#xD;
                        &amp;lt;telerik:GridViewColumn.CellTemplate&amp;gt;&#xD;
                            &amp;lt;DataTemplate&amp;gt;&#xD;
                                &amp;lt;telerik:RadComboBox ItemsSource="{Binding SexItems,Mode=TwoWay}" SelectedValue="{Binding Sex,Mode=TwoWay}" SelectedValuePath="Value" DisplayMemberPath="Text"/&amp;gt;&#xD;
                                &#xD;
                            &amp;lt;/DataTemplate&amp;gt;&#xD;
                        &amp;lt;/telerik:GridViewColumn.CellTemplate&amp;gt;&#xD;
                    &amp;lt;/telerik:GridViewColumn&amp;gt;&#xD;
                &amp;lt;/telerik:RadGridView.Columns&amp;gt;&#xD;
            &amp;lt;/telerik:RadGridView&amp;gt;&#xD;
           &#xD;
        &amp;lt;/StackPanel&amp;gt;&#xD;
    &amp;lt;/Grid&amp;gt;&#xD;
&amp;lt;/UserControl&amp;gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;MainPage.Xaml.cs：&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;using System.Windows;&#xD;
using System.Windows.Controls;&#xD;
using RadControlsBug.Model;&#xD;
&#xD;
namespace RadControlsBug&#xD;
{&#xD;
    public partial class MainPage : UserControl&#xD;
    {&#xD;
        public MainPage()&#xD;
        {&#xD;
            InitializeComponent();&#xD;
&#xD;
            this.Loaded += new RoutedEventHandler(Page_Loaded);&#xD;
        }&#xD;
&#xD;
        void Page_Loaded(object sender, RoutedEventArgs e)&#xD;
        {&#xD;
            Company _viewModel = new Company();&#xD;
            this.DataContext = _viewModel;&#xD;
            &#xD;
        }&#xD;
        &#xD;
    }&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;该问题曾经困扰我长达2周之久，在&lt;a href="http://www.telerik.com/community/forums/silverlight/gridview/radcombobox-radgridview-bug.aspx" target="_blank"&gt;Telerik的论坛上提问&lt;/a&gt;也未得到回复。&lt;/p&gt;&#xD;
&lt;p&gt;曾经反复尝试，发现解决方法居然极其简单：&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;telerik:RadComboBox &lt;span style="color: #ff0000;"&gt;ItemsSource="{Binding SexItems,Mode=TwoWay}"&lt;/span&gt; SelectedValue="{Binding Sex,Mode=TwoWay}" SelectedValuePath="Value" DisplayMemberPath="Text"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;改成：&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;telerik:RadComboBox&amp;nbsp; SelectedValue="{Binding Sex,Mode=TwoWay}" SelectedValuePath="Value" DisplayMemberPath="Text" &lt;span style="color: #ff0000;"&gt;ItemsSource="{Binding SexItems,Mode=TwoWay}"&lt;/span&gt;/&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;后，问题奇迹般的解决了！&lt;/p&gt;&#xD;
&lt;p&gt;分享于此，希望有助于遇到同样问题的朋友。(个人分析：有可能telerik的开发人员在解析XAML时，判断逻辑依赖于属性出现的顺序导致--胡猜的，我也没去看它的源码)&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;最后谈一下我个人对于Telerik RadControls For Silverlight这套控件的感受，用这套控件做项目开发已经有近3个月的时间，总体感觉还不错，能大幅提高团队的开发效率，官方有详细文档和示例，上手非常容易，而且客观来讲，BUG也比较少(用了3个月，基本上才发现这一个比较诡异的BUG)，此外，如果是正版用户，官方还提供源码，并有一年的免费升级期限，每季度官方均会对整套控件做一次升级（主要是修复之前的BUG，以及增加一些新功能）。 从成本上考虑，一套控件的售价9k RMB左右(无Licence数量限制，而且能拿到源码任意修改)，国内用户可在慧都控件网上直接购买，对于公司来讲这个成本其实并不高（相比公司招人自己实现这些控件的功能而言，9k多其实可以忽略不计了），如果您的公司打算致力于企业级应用的RIA开发，建议使用。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yjmyzz/aggbug/2274977.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yjmyzz/archive/2011/12/03/2274977.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
