Bri*_*tiz 18 wpf designer mvvm
我正在使用MVVM模式开发一个联网的WPF应用程序,它似乎正在运行并连接到设计器中的服务器.
我知道IsInDesignMode属性,但我不确定如何在ViewModel中访问它.
neo*_*lei 30
DependencyObject dep = new DependencyObject();
if (DesignerProperties.GetIsInDesignMode(dep))
{
...
}
Run Code Online (Sandbox Code Playgroud)
Kyl*_*Mit 22
只是为了添加这些建议,您可能希望针对生产部署进行优化.
如果需要在ViewModel中检查设计模式,则只能在DEBUG模式下执行此操作,否则发布的版本将始终执行不必要的检查.
在开发时,如果在设计模式下,您可以退出该方法(或者甚至存在一些假数据).
将此代码作为构造函数的第一行(或者调用的任何代码):
C#:
#if DEBUG
if (DesignerProperties.GetIsInDesignMode(new DependencyObject())) return;
#endif
Run Code Online (Sandbox Code Playgroud)
VB:
#If DEBUG Then
If DesignerProperties.GetIsInDesignMode(New DependencyObject()) Then Return
#End If
Run Code Online (Sandbox Code Playgroud)
我想我会加入这个,因为我只是查看了我在VS2015中发现的东西,它提供了另一种解决方案.在设计器中有一个"禁用项目代码"的按钮.
我假设您ViewModel正在实例化并从您的代码中执行操作.我知道它打破了纯粹的MVVM,但我看到很多人DataContext = new MyViewModel();在代码背后的构造函数中做了类似的事情.
切换此按钮可以解决该问题,并有助于保持代码清洁.结帐MSDN以获取更多信息.
这是MSDN文档中的图像,因此您可以了解它的外观.无论如何,我确信链接最终会破裂.
我在VS2015中发现了这一点,但不确定添加了哪个版本的功能.
作为旁注,它也是一种重新加载设计师的好方法.虽然我尝试时速度很慢.你的milage可能会有所不同.
| 归档时间: |
|
| 查看次数: |
10625 次 |
| 最近记录: |