Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在学习WPF时,你发现什么最难理解_.net_Wpf - Fatal编程技术网

.net 在学习WPF时,你发现什么最难理解

.net 在学习WPF时,你发现什么最难理解,.net,wpf,.net,Wpf,你吃了什么WPF 难以理解 或者被误解了很长时间 和您最后是如何理解的(请提供链接等) (我问这个问题是为了指导我学习WPF)依赖属性花了一段时间。这里有一个,它帮助我实现了这个新概念 第二篇文章包含了下面的一段,它确实澄清了我的几个问题 依赖项的键值 系统的性能是 生成自动生成的属性 通知任何已登记的利害关系方 每一次,财产的价值 变化。这是免费的、无痛的、安全的 自动执行 观察者模式非常复杂 功能强大,大大降低了成本 客户端程序员的负担(在 事实上,数据绑定系统取决于 在上面!) 更一般

你吃了什么WPF

  • 难以理解
  • 或者被误解了很长时间
您最后是如何理解的(请提供链接等)


(我问这个问题是为了指导我学习WPF)

依赖属性花了一段时间。这里有一个,它帮助我实现了这个新概念

第二篇文章包含了下面的一段,它确实澄清了我的几个问题

依赖项的键值 系统的性能是 生成自动生成的属性 通知任何已登记的利害关系方 每一次,财产的价值 变化。这是免费的、无痛的、安全的 自动执行 观察者模式非常复杂 功能强大,大大降低了成本 客户端程序员的负担(在 事实上,数据绑定系统取决于 在上面!)

更一般地说,我还发现以前的web开发经验(特别是浏览器UI)对于“获取”WPF非常有用。与只使用过Windows窗体或其他富客户机应用程序的人相比,它更多地是关于它允许您将思维方式带入WPF的


web世界中一些更明显的相似之处是CSS、流畅的布局、jQuery动画、事件冒泡/路由以及对广泛的浏览器和DHTML对象模型的适应;i、 e.何时使用绑定以及何时使用StaticResource/DynamicSource。当我第一次学习WPF时,我总是把这两个概念混淆起来


DP和附加属性的不同形式起初也很难理解。

WPF不是WinForms。在WinForms中完成任务所使用的大多数(如果不是全部)常用策略在WPF中是错误的(或效率最低的)。如果您采用WinForms的思维方式,那么命令、依赖属性、绑定、模板等都将变得不那么有用

目前,我们正在开发一个大型可视化应用程序。作为经验丰富的WinForms程序员,我们的第一个切入点是多维数据的显示,预先计算了数千个可视元素。滑块将使用回调遍历可视元素的维度。除了初始设置之外,不会加载任何数据。这是非常糟糕的表现

使用数据转换器切换到数千个绑定,仅在几百个可视元素上,动态加载和重新计算数据。这导致了性能的一个数量级的改进。几乎无法想象数千个绑定会比数千个预先计算的可视元素更快,但WPF就是这样

“”可能很有用。

(并控制模板)

表面上看,这相当简单,但一旦开始尝试在不同的XAML文件之间设置绑定,就会变得非常混乱


我想,通过阅读大量的MSDN文档,我最终能够很好地理解它,但更重要的是,尝试和错误。玩弄东西通常是学习任何技术的最佳方式。

我想说,当我开始学习WPF时,最难的一点是:

  • 样式和模板:我花了一段时间才理解何时使用它们,以及它们如何相互作用
  • 相对资源
    的复杂绑定,转换器
  • 触发器:有时我仍然会对应该在哪里使用
    DataTrigger
    s、
    Trigger
    s或
    EventTrigger
    s感到困惑
  • 依赖属性和附加属性的机制
  • 路由事件的工作方式
如果您有使用Windows窗体的经验,那么一开始会有很多小事情看起来很困难。您需要忘却很多东西,并切换到一个非常不同的UI结构心智模型

起初,我开始像在Windows窗体中那样编写代码,后面有很多代码,但这绝对不是正确的方法。真的帮助我进入了WPF的“哲学”

我学习WPF的主要文档来源当然是MSDN,如果你知道怎么看,你可以在那里找到大多数答案。我在以下博客上也学到了很多东西:


如果没有备忘单,我仍然无法在动画中指定目标属性:

<DoubleAnimation
Storyboard.TargetProperty=
"(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" 
To="1.2" Duration="0:0:.2" />

通读书籍并理解内容是一回事,将它们应用到项目中则是另一回事。我创建了一个相对简单的联系人列表控件,就像在Outlook中一样,并且遇到了许多小但明显的学习曲线

  • 首先,模板制作在你阅读的时候看起来很简单,但是当你使用它的时候,它会变得更复杂。当文本框获得焦点时,仅设置用户控件的背景色是一项挑战。结果我不得不使用
    DataTrigger
    (谁会想到)
  • 使用包装器作为列表框的
    ItemsPanel
    突然成为一个挑战,因为它没有安排项目(您必须使用它)
  • 在绑定中肯定
    相对资源
  • 基本上,能够在模板中绑定控件(从父级到子级,反之亦然)是一个很好的学习曲线

    我的建议。编写一个小应用程序,你会看到事情进展顺利。

    很抱歉,时间太长了。。。希望这是有帮助的!我要提到的一件事是,这些概念/事情让我大吃一惊,我不确定如果你刚刚开始学习,我是否会将其作为一个逐项列出的学习内容。我会潜入其中,阅读很多博客(,),一般来说,潜入并尝试一些小项目

    核心概念

    • 逻辑树和可视树(链接:)

      了解WPF中的不同树。特别是,了解