【问题标题】:How to manually reload the Visual Studio designer for WPF如何为 WPF 手动重新加载 Visual Studio 设计器
【发布时间】:2011-04-13 08:11:22
【问题描述】:

有没有办法强制 WPF 设计器重新加载或刷新,而不重建整个项目或解决方案?

如果出现错误,我会在设计器视图中获得一个选项来刷新设计器。但是如果我没有错误,我如何让设计器在我进行更改后刷新?

【问题讨论】:

  • 到目前为止,最好的方法是访问一些隐藏在文件中的代码,然后再次访问 XAML 文件。这虽然有用,但很差。顺便说一句,很好的问题。同样的问题也适用于混合。
  • 至少在理论上,设计视图始终与 XAML 同步,因此无需手动刷新它。请问在什么情况下要重载?
  • 现在已经几个月了,所以我不记得确切的情况了。这可能与我对数据绑定列表视图和列表视图项进行更改有关。有时更改数据模板的构建方式不会使其进入设计模式。
  • 我一直在使用普通的 jane xaml 时遇到问题。没什么特别的,突然间,设计师停止了更新。所以,你是对的,“理论上”它总是同步的。然而,在实践中,事实并非如此。 :-(
  • 任何动态对象都需要解决这个问题......

标签: wpf visual-studio xaml designer


【解决方案1】:

我不确定,但我认为构建会在这种情况下刷新您的视图。

【讨论】:

  • 是的,它会的。但如果我需要构建项目或解决方案以便在设计器中看到我的更改,我还不如完全忽略设计器并直接运行应用程序本身!
  • @dthrasher 对我来说,我正在开发的应用程序需要几秒钟才能加载所有数据。构建要快得多。但这当然取决于每个项目。无论如何,我注意到设计师并没有持续刷新,这很糟糕,但构建是我所知道的最好的工作。
【解决方案2】:

该 XAML 文件中处理了任何事件,然后大多数情况下它不会显示来自 Visual Studio 的设计预览。如果您想从 Visual Studio 中查看设计,请尝试使用命令绑定而不是事件,您将看到预览。

【讨论】:

    【解决方案3】:

    我不确定这在 WPF 编辑中是如何工作的,但是对于 ASP.NET 页面,当设计视图不会更新时,我可以做两件事

    1. 退出 Visual Studio 并重新启动
    2. 进入源视图(未拆分),键入内容并将其删除(不是通过撤消,只需删除或备份)并保存。然后返回设计视图,通常视图已经更新。

    【讨论】:

      【解决方案4】:

      Visual Studio 设计器尝试使呈现的视图与 XAML 保持同步。这就是宣传的行为。

      • 您首先应该检查的是错误窗口中没有错误。可能只是缺少尖括号一样简单。
      • 要检查的第二件事是您是否有任何代码(除了您的代码隐藏之外)需要为设计器编译以正确呈现您的 XAML。这包括您在 XAML 中实例化的任何您自己的数据类型、您编写的任何自定义控件(例如,从 TextBlock 派生的 MyTextBlock)或直接或间接支持设计时数据的任何类。如果是这样,您需要重新构建您的项目。
      • 最后要检查的是设计器中可能存在的错误。尽管有广告宣传的行为,但设计人员可能会由于错误而变得不同步。在该关闭状态下,关闭 XAML 窗口并重新打开它。其他可能有效的技巧是选择 XAML 选项卡,然后选择设计选项卡,或者最大化 XAML 窗格。

      就重建您的应用程序而言,您不需要将其作为一种习惯。只有在满足上述条件时才需要重新编译。一旦它们不适用,您只需编辑 XAML。另一种说法是,如果您没有修改代码,则不需要重新构建(模数错误)。

      【讨论】:

      • 您的第二个要点非常好:如果我编写的 XAML 依赖于必须编译的代码,并且编译后的代码会发生任何变化,那么除了重建项目别无选择。问题部分是由于我的个人工作流程;在单个编程会话期间,我经常在编辑用户控件、隐藏代码和 XAML 之间切换。
      【解决方案5】:

      我有点晚了,但这是迄今为止我发现的最好的解决方案1:每当设计师做愚蠢的事情时,我都会杀死它的过程。

      Ctrl+Shift+Esc
      导航到“进程”选项卡。
      杀死 XDesProc.exe

      这也解决了属性窗口的问题(例如当它被卡住并且您无法在其中输入内容时)。

      1 这是设计者问题的解决方案。您的问题也可能是由编译问题引起的,在这种情况下,只需在解决方案资源管理器中右键单击解决方案,然后将其清除即可。其背后的原因是有时编译会失去与从 XAML 生成的文件的同步性,清理解决方案只会删除那些中间文件;这就像重置一样,因此您的编译可以从头开始。


      快速完成:

      如果按字母顺序排序,它通常是最后一个。
      到时候,快点弹出任务管理器,点击任意进程,按EndDeleteEnter几乎就像是一种仪式(完成),Esc(退出任务管理器)。您可以在 1-2 秒内完成,而不是重新启动 VS 并等待所有加载和卸载。

      【讨论】:

      • 这太棒了!!谢谢!
      • 或者构建一个批处理文件并将其配置为始终以管理员身份启动:TASKKILL /IM XDesProc.exe /F
      • 这很有趣。您完全按照我的方式计算出来(如果我没有先找到这个解决方案):终止进程。然后您继续按照对开发人员的意义进行解释:快速组合击键以解决一些烦人的错误。总是有利于融化您向其展示未完成产品的人的思想。 +1
      • 这太棒了!!太感谢了!节省了我很多时间:)
      • 太棒了。只需设置具有一些专有和利润的快捷方式/热键自动化。
      【解决方案6】:

      当您添加新的代码行或新对象时,XAML 设计器是同步的,但是当对象的属性发生更改时,我遇到了非同步行为。

      一个棘手的方法是,当您更改一个属性时,您只需从指令末尾删除一个“>”字符,然后重新键入它。

      【讨论】:

        【解决方案7】:

        您可以将此添加到 Visual Studio 中的 Tools 菜单中。

        配置后,使用Tools..XAML Designer Restart:

        Alt+T 然后 L

        我尝试将其配置为 Alt+T 然后 X 但这与 Tools..Choose ToolboX Items 发生冲突。

        更新

        这些天,我更喜欢按 Ctrl+Shift+Esc 来调出进程管理器,然后按 X 跳到XDesProc.exe 然后Delete 杀死流氓进程。

        【讨论】:

        • Win10 PC,在任务管理器进程列表中找不到 XDesProc.exe,但这种方法对我仍然有效。 +1
        • @Contango 默认安装初始目录的完整路径是什么?
        • @xtreampb 根据记忆,这是默认设置。只要taskkill.exe 在路径中的某个位置,它就会起作用。您可以尝试在 cmd 提示符下运行它以查看它是否已安装。
        • 然后你可以打开工具 -> 选项 -> 环境 -> 键盘并为命令“Tools.ExternalCommand{x}”设置一个快捷方式,其中 {x} 是菜单在“外部”中的位置工具”窗口。
        【解决方案8】:

        在较新版本的 Visual Studio 中,设计器底部有一个“禁用项目代码”图标。如果您将其关闭再打开,它将重新加载设计器。

        【讨论】:

        • 这是一个更优雅且不那么骇人听闻的解决方案......对于一个具有讽刺意味的不优雅和骇人听闻的产品
        【解决方案9】:

        有关信息,我在 Visual Studio Community 2017 的 XAML 设计器中遇到了同样的问题,即有时设计器没有显示任何内容,最简单的解决方案是关闭 XAML 文件并重新打开它。

        我也经常收到异常“发生未处理的异常 - 单击此处重新加载设计器 - 详细信息:XAML 设计器已意外退出”(单击成功重新启动设计器)。

        注意,在这个VS版本中,XAML设计器的进程不是命名为XDesProc.exe,而是UwpSurface.exe。如果您愿意或必须终止该进程,则设计器会显示与上述相同的异常,您可以重新启动它。

        【讨论】:

          【解决方案10】:

          在 XAML 设计器的工具栏上,选择“禁用项目代码”按钮以重新加载位于“打开对齐对齐线”右侧的设计器链接。

          Disable project code in the designer

          如果它被禁用,你可以尝试检查配置管理器并将处理器更改为“Any CPU”。

          对于面向 ARM 或 X64 处理器的项目,Visual Studio 无法在设计器中运行项目代码,因此禁用项目代码按钮在设计器中被禁用。检查这个:

          Debug or disable project code in XAML Designer

          【讨论】:

            猜你喜欢
            • 2014-04-19
            • 2014-05-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多