【问题标题】:How to debug VisualStateManager in runtime如何在运行时调试 VisualStateManager
【发布时间】:2013-07-26 18:32:36
【问题描述】:

有一些非常有用的工具可以在运行时调试 WPF 应用程序,例如 SnoopWPF InspectorXaml Spy,它们允许您偷看正在运行的应用程序并监视属性值、DataContext 更改、路由事件和甚至触发切换。

但我没有设法在其中任何一个中找到如何在运行时监控特定选定控件的状态之间的 VisualStateManager (VSM) 转换

是否有任何工具可以帮助找出控件未进入特定预期状态的原因(考虑到此应用程序/库缺少源代码)?

更新:问题主要是关于调试编译的代码,当您没有访问源代码时。对于您可以访问源代码here is pretty good explanation 的一种情况。

【问题讨论】:

  • 这是个好问题。我认为唯一的方法是使可视化状态管理器尽可能简单和精简。调试 UI 的东西是 WPF 的一个弱点。因此,您可能会尽量避免它。
  • @BillZhang - 是的,同意。如果可以的话,我当然想避免它:/
  • 例如,您可以将状态转换放入代码后面的事件处理程序中。由于这些代码纯粹与 UI 相关,因此不会伤害和破坏任何设计模式。
  • @BillZhang,这可能有效,但前提是 正在编写处理 VisualStateManager 的代码。但是,如果有一些第三方 UI 组件具有使用 VSM 的自定义控件并且它不能按预期工作但对应用程序至关重要,我们该怎么办?

标签: xaml debugging runtime winrt-xaml visualstatemanager


【解决方案1】:

控件不横切其状态有一些原因。

可能有不止一个 VisualStateGroup 并且它已被命名为某事。

在加载控件之前调用视觉状态。

VisualState 将仅在控件的 OnApplyTemplate 调用之后应用。

如果有任何语法错误。

Visual 状态如何无法使用某些东西进行跟踪,但可以使用 GoToState 方法的返回值进行调试。

希望这会有所帮助..

【讨论】:

  • Sankarann,谢谢你的回答。虽然这听起来正确,但我宁愿寻找一种工具(或一种已经存在的自定义行为/控件),它可以让我在 run-time 中观察特定控件的当前 (VSM) 状态b>,就像我可以使用问题中提到的工具观察其任何属性的值一样。
猜你喜欢
  • 1970-01-01
  • 2013-11-19
  • 1970-01-01
  • 1970-01-01
  • 2019-12-27
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多