这个问题的原因可能是因为在Silverlight和WPF中,存在一些不同的控件和功能,导致在一个平台上可以正常工作,但在另一个平台上无法正常工作。例如,Silverlight和WPF中的控件和布局系统可能有所不同,导致在一个平台上可以正常工作的控件在另一个平台上无法正常工作。
为了解决这个问题,您可以尝试以下方法:
如果您仍然遇到问题,请提供更多详细信息,以便我们能够更好地帮助您解决问题。
因为这是一个控件库,我们要添加程序集System.Windows.Controls的引用,这个程序集在Silverlight 2.0 beta 1的版本号是1.0.0.0(不要问为什么:-) ),默认会并放在...标签内可以定义充分的控件外观包括StoryBoards式的视觉状态转换,视觉元素和StoryBoards的名称非常重要,因为他们是Silverlight的样式可以工作的不可或缺的一部分,这里我们不讨论,...在解决方案浏览器中右击Solution节点选择添加一个Silverlight应用类型项目: ?...将我们控件加入测试项目 在测试项目TestApplication中测试我们的自定义控件,我们需要添加控件工程的引用。 ?...关于作者 Attila Hajdrik 之前是微软的高级顾问,2008年成立了自己的公司,公司的重点是.NET开发,主要是Silverlight 2.0和WPF项目 译者注:通过这篇文章就可以知道
做过WPF开发的程序员对BusyIndicator应该不陌生,Extended WPF Toolkit 提供了BusyIndicator的开源实现,Silverlight Toolkit也有一个,这次想要把这个控件移植到...在Silverlight中,它的UI如下: ?...2.2 移植 Extended WPF Toolkit和Silverlight Toolkit中的BusyIndicator实现基本一致,由于Silverlight和各个XAML平台的兼容性都比较好,我选择了...Silverlight Toolkit中的BusyIndicator用于移植。...,有一些细节是实现模板化控件需要注意的: BusyContent BusyContent没有在依赖属性定义中的PropertyMetadata给出默认值,而是在Setter中给出,这是模板化控件中依赖属性的最佳做法
如果用户输入的值无效,你可能希望在应用程序 用户界面 (UI) 上提供一些有关错误的反馈。...有关验证的详细讨论, 请参阅数据绑定概述中的 "数据验证" 一节。...其它样式的Validation.ErrorTempalte 现在常见的显示错误信息的手段通常是在输入控件下预留足够显示一行错误信息的空间,例如这样: ?...由于我常常都在WPF上做所谓的“信息密集型”软件,所以多年来一直都是用Silverlight的这个ErrorTemplate,没机会跟风修改它的样式。...结语 Validation.Error没有办法一次性为所有控件统一设置,只能在全局样式中为所有控件都分别设置一次,例如上面出现的`TextBox的Style,这会很麻烦,毕竟WPF的控件还不少。
本文告诉大家,在后台代码,对 TranslateTransform 做动画的方法 今天小伙伴问我一个问题,说为什么相同的代码,如果设置到按钮上,是可以让按钮的某个属性变更,但是如果设置给 TranslateTransform...的 X 或 Y 就不会有任何值变更 在 WPF 中,通过 官方文档 里面的描述,对于 Freezable 类型的对象,如 SolidColorBrush 和 RotateTransform 和 GradientStop...(); } 在后台代码做动画,如果使用 SetTargetName 就需要让 Storyboard 和对应的元素在相同的一个 NameScope 里,不然将会提示 System.InvalidOperationException...不存在可解析名称“xx”的适用名称领域,如下面代码 System.InvalidOperationException:“不存在可解析名称“ButtonTranslateTransform”的适用名称领域...但是上面代码将会在资源字典加入一个 Storyboard 而没有释放,如果在你的实际代码,我推荐在动画完成之后,删除资源字典的动画 我特别翻了 WPF 编程宝典,发现宝典里面没有这部分知识,也就是没有告诉大家为什么直接给
前言 WPF有一个灵活的UI框架,用户可以轻松地使用代码控制控件的外观。...中存在名称为 "ContentPresenterName",类型为UIElement的部件。...TemplatePartAttribute在UWP中的作用好像被弱化了,不止在UWP原生控件中见不到TemplatePartAttribute,甚至在Blend中“部件”窗口也消失了。...现在看起来是VisualState的胜利,其实在Silverlight和UWP中TemplatePart仍是个十分常用的技术,而在WPF中Trigger也工作得很出色。 ? ?...结语 VisualState是个比较复杂的话题,可以通过我的另一篇文章理解ControlTemplate中的VisualTransition更深入地理解它的用法(虽然是UWP的内容,但对WPF也同样适用
前言 HeaderedContentControl是WPF中就存在的控件,这个控件的功能很简单:提供Header和Content两个属性,在UI上创建两个ContentPresenter并分别绑定到Header...以前的问题 在WPF中,HeaderedContentControl是Expander、GroupBox、TabItem等诸多拥有Header属性的控件的基类,虽然很少直接用这个控件,它的存在也有一定价值...不过在WPF中它的价值也仅此而已,由开发者自己实现也极其容易,以至于后来在Silverlight中就没有提供这个控件(后来放到了Silverlight Toolkit这个扩展里)。...微软第一次在UWP提供了HeaderedContentControl,有了一个Object类型的Header属性,两件事本应该为开发者提供更多的方便,但是,为什么会变成这样呢。...这样的合体姿势明显不对,事实上在WPF中继承HeaderedContentControl的控件(如Expander和GroupBox)都在ControlTempalte中使用了Grid或DockPanel
为什么需要ProgressRing 虽然我认为这个控件库的控件需要模仿Aero2的外观,但总有例外,其中一个就是ProgressRing。...在Windows 10中ProgressRing十分常见,而且十分好用。它还支持自适应尺寸,在紧凑的地方使用ProgressRing会给UI增色不少,而且不会显得格格不入: ?...参考Silverlight Toolkit,我也把常用的各种VisualState的状态名称作为常量写到一个统一的VisualStates类里: #region GroupActive /// <summary...XAML大概这样: <DoubleAnimationUsingKeyFrames Storyboard.TargetName...正确的做法是将计算尺寸及改变尺寸的操作都放到最初的MeasureOverride中。 5.
我不建议初学者做太多动画的工作,但合适的动画可以引导用户视线,提升用户体验。例如上图的这种动画,这种动画挺常见的,在内容的高度改变时动态地改变自身的高度,除了好看以外,对用户体验也很有改善。...其实老老实实从Silverlight Toolkit移植AccordionItem就好,但我想通过这个控件介绍一些布局(及动画)的概念。...需要了解的概念 为了实现这个控件首先要了解WPF UI元素的布局过程。...2.2 MeasureOverride MeasureOverride在派生类中重写,用于测量子元素在布局中所需的大小。...很久很久以前常常遇到“布局循环”这个错误,这常常出现在处理布局的代码中。最近很久没遇到这个错误,也许是WPF变健壮了,又也许是我的代码变得优秀了。
1.1 在XAML上使用PointAnimation <Storyboard x:Name="Storyboard2" RepeatBehavior="Forever"...在WPF中可以通过继承Timeline实现一个PointCollectionAnimamtion,具体可以参考这个项目。...然后就是定义在XAML上的使用方式。...不过我并不清楚怎么在UWP上自定义动画,只能通过本文的折衷方式扩展。...不会因为动画API的改变而更改,可以兼容WPF、Silverlight和UWP(大概吧,我没有真的在WPF上测试这些代码)。
的名称。...public string From { get; set; } } 3.为什么使用VisualTransition 虽然自WPF4以来VisualTransition一直都存在,但很多人还是习惯这样写...> 可以看到VisualState中的Storyboard...这段XAML在Blend中对应“状态”面板里VisualStateGroup的“默认过渡”。 ?...为什么有时候VisualTransition没有生效 ControlTemplate在VisualState之间切换是靠下面这个函数控制的: // // 摘要: // 通过按名称请求新的 Windows.UI.Xaml.VisualState
ExtendedExpander的需求 使用Resizer实现的简易Expander没办法在折叠时做淡出动画,因为ControlTemplate中的ExpandSite在Collapsed状态下直接设置为隐藏...Name="Expanded"/> ...,应该可以轻易地移植到WPF(不过某些情况运行起来卡卡的)。...其它控件库的AccordionItem也可以实现类似的功能,可以当作Expander来用,例如Silverlight Toolkit,移植起来应该也不复杂。 ?...ExtendedExpander的XAML没有使用之前的每个属性一行的方式写,这样的好处是很容易看清楚结构,但在分辨率不高的显示器,或者在Github上根本看不到后面的属性,很容易因为看不到添加在最后的属性犯错
Silverlight初级教程 动画 在这一节里将要用到在“认识工作区”中提到的时间抽了。这里将和学习flash的过程一样做一个最简单的动画。...silverlight中的动画是以“storyboard”的形式表现出来。“storyboard”你可以认为是flash中的时间轴。 ...flash中只有一个时间轴,而在silverlight中却可以有多个“storyboard”。 在flash中是有一个帧频的概念的,例每秒12帧、每秒30帧等。...(经过我多次试验才找出了可视化设置Storyboard属性的方法) 有两个属性 “是否自动回放”以及“循环次数”。 好了点击“x”退出动画编辑状态。按“F6”还原界面布局。...做到这里只是建立好了“Storyboard”。其不会自动的去播放的。 要让“Storyboard”播放有两个方法。一个是在XAML中描述(比较复杂)。
这个项目还应该是解决方案的启动项目。运行这个项目后创建的应用会添加到开始菜单中,这点也和UWP一样。...而且 UWP 中代码的命名空间以 Windows.UI 开头,在 WinUI 3 中则 Microsoft.UI ,按着 Office 365 改名为 Microsoft 365、Bind Ads 改名为...性能 WPF 总是给人“慢”的印象,除了因为在它刚出来的时候(10年前)电脑性能不够导致留下了刻板印象,还有一个主要原因是:它真的很慢。...()顺便一提,将测试代码中旋转的矩形减少为10个,WPF 的程序占用 32% GPU,而 WinUI 占用 70 多%。)...我做了好多年 Silverlight 开发,买了5、6部 Windows Phone 手机,写了几十篇 UWP 文章,根据我丰富的经验,我可以肯定 WinUI 是有未来的。 8.
(相当于UI层) 3.silverlight.web是用来测试silverlight项目的 当然,如果还有一些常用的业务逻辑,也可以考虑再建一个silverlight类库(类似传统开发中的BLL层)...,复制了一节,并命名为style2,相当于样式表中定义了另一个类名,看下如何应用,仍然在Blend环境中,保持Silverlight项目的MainPage.xaml文件打开状态,注意右侧面板中的Resources...这就是xaml中的style跟html的css不一样的地方,sl中的style没有优先级别(只能设置属性默认值),而且一个项目中,如果有相同x:Name定义的样式,运行时会报错(即样式的名称必须唯一)。...换言之,style可以同时影响对象的外观和内容,在接下来的尝试中,我们还将看到style的更强大威力,它甚至可以影响到对象的行为。...顺便提一句:视觉状态的定义,除了手动写代码,在blend中也可以轻松搞定 ?
幸运的是从Silverlight以来Shape基本没有什么大改动,简直是UWP中的一股清流。 ?...上图来自Pro Silverlight 5 in C#,可见Silverlight中的Shape和UWP的Shape基本架构一致。...Shape的API从WPF以来就几乎没变,对熟悉WPF/Silverlight的开发者来说几乎是零学习成本。 1....这两个属性都是Shape的属性,但对Ellipse和Line这两个没有拐角的形状不起作用。 ? 3. Line(直线) Line表示从第一个点(X1,Y1)到第二个点(X2,Y2)的一条直线。...结语 系统地学过Shape相关知识只在很多年前刚开始学WPF/Silverlight时做过,平时除了Rectangle和Line其他的Shape好少会用到,所以即使有多年经验对Shape的很多知识点还是有点陌生
就是点击的时候,看命中到哪个元素,如果容器没有设置背景,那么这个容器就不能接收命中测试,也就是点击的时候不会判断点击到这个容器 在后台代码添加鼠标点击的代码 如何在 WPF 中显示一个圆圈?...在 WPF 中,可以通过 GetPosition 方法拿到鼠标相对于某个元素的坐标,或者说鼠标点击到某个元素的坐标。...用变换的方法做动画的效率相对会比较高 接下来就是动画的部分了,在 WPF 中的动画需要通过 Storyboard 故事板触发,而通过具体的 Animation 执行对不同的属性的更改。...,然后圆圈不断变大 当然,还有下一步就是让圆圈变淡,在 WPF 中可以通过修改圆圈的透明度做动画,请看代码 var opacityAnimation = new DoubleAnimation...在 WPF 中的单位不一定是像素,因为 WPF 和屏幕具体分辨率等有很复杂的关系,详细请看本文最后的参考文档 还记得刚才是如何修改元素的坐标?
其实,开发人员比较难理解WPF 框架中为什么会提出 Style、Template、Command、State、StoryBoard、Trigger 等这些概念,但是当你看一看 Flash 或者 PhotoShop...的设计人员平时的工作,就会发现原来许多概念早已是他们的常识,而 .NET 只是把这些概念在 WPF 框架上加以实现而已。...其实都很简单,使用 Microsoft Expression Blend 这个专业的 WPF/Silverlight 设计工具进行界面设计,拖拖拽拽就搞定了。 这里要注意的是可视树中的动态行为。...虽然它们并不是设计人员的工作,但是它们是连接开发与设计的桥梁,鉴于它们的重要性,这里还是专门说明一下: 路由事件 在设计自定义逻辑控件时,可以在类型的静态构造器中使用 EventManager.RegisterClassHandler...那么,为什么还要把一些属性设置编写在 Style 中,再去让 Template 中的控件进行模板绑定,这不是太绕了吗?
使用 CSS 轻松搞定 这个效果太神奇了,他还问我能不能用 WPF 搞出来,因为我完全没用过 WPF 的 3D,我第一反应是“这太难为我了”。...一股“吾有上将 UWP,可搞定 3D 穿梭效果”的豪气油然而生。 于是就把这动画效果造出来了。 总的来说,实现 3D 穿梭的原理是靠改变 CSS 中的 perspective 产生透视效果。...="50" /> <media3D:CompositeTransform3D x:Name="TransformRight" x:Key="TransformRight" RotationY="90"...这简单,用最基本的 DoubleAnimation 操作TranslateZ 从 10 变到 200: 这时候基本的动画就已经实现了,但是没办法做到首尾相连,所以先把之前的成果封装成一个控件: 然后给它加上透明度变化的动画: <Storyboard x:Name="Fade" RepeatBehavior
sb.Begin(); 在不少的应用中需要动态的创建动画作出一些复杂的效果。...比如说当当拖拽元素是可以简单的用c#代码创建一个storyboard并在这个board中创建一个DoubleAnimation。...但是用c#代码创建动画会导致runtime errors因为这还是silverlight的一个bug。但是用 xaml 并load他成为一个简单的storyboard。...xamlReader 对象有一个非常有用的Load()方法。 这里要提醒一点 创建Storyboard一定要把属性些完整了。 不要漏写了类似x:Name这样的属性。...若够漏写silverlight不会报任何错误。在调试时是直接跳出。 我就犯了这样的错误。
依赖属性标识符的名称必须为“属性名+Property”。在PropertyMetadata中指定属性默认值。 实现属性包装器。...可以在PropertyMetadata中定义一个PropertyChangedCallback方法。...在WPF中,这个问题并不存在,因为WPF的依赖属性可以使用CoerceValueCallback约束属性值,而UWP的依赖属性被简化了,缺少这个功能。...为什么使用Silverlight的关键字来搜索?因为Silverlight同样存在这个问题。虽然网上能找到不少解决方案,但以我的经验来说没有方案能很好地解决这个问题。...顺便一提,Silverlight的依赖属性参考文档也比UWP的依赖属性参考文档好用一些。 提示: 为什么使用TwoWay Binding可以解决这个问题?
领取专属 10元无门槛券
手把手带您无忧上云