x:Reference与Storyboard.TargetName

时间:2017-11-21 20:46:53

标签: wpf xaml

在WPF中,有没有真正的理由使用Storyboard.TargetName="myElement"代替Storyboard.Target="{x:Reference myElement}"

1 个答案:

答案 0 :(得分:0)

我的答案基于this postthis MS forum (has examples with pictures)


尽管从研究中我得出结论, ElementName 是这样的方法,但

MS对此没有评论:

  1. ElementName已针对UiElements优化,不适用于非UIElements
  2. x:Reference返回对该对象的引用。 ElementName在VisualTree中查找对象,因此该对象已在内存中。
  3. x:Reference搜索范围(通常是顶级窗口)以搜索元素(例如Window.UserNameTB),与导航VisualTree相比,该元素最有可能带来性能开销(不能肯定地说,因为我没有编程)该功能)。


  • {x:Reference ...} ->
    • 仅返回一个对象的引用,该对象不会像绑定那样在两个属性之间创建“桥梁”。
    • 正在使用所有在特定范围(通常是窗口本身)内搜索给定名称的服务之后。


  • {Binding ElementName="..." } ->
    • 创建该绑定对象,然后搜索对象名称。搜索算法在VisualTree中向上和/或向下移动以找到所需的元素。
    • 因此,始终需要功能性的VisualTree。作为示例,当在Non-UiElement中使用时,它将不起作用。最后,装订线停留并进行日常工作。