在静态方法中使用WPF检测设计模式

6

我正在使用WPF。我有一个静态类,执行一些在设计模式下不可用的设置。这个构造函数被一个窗口在设计模式下调用,导致抛出异常。

如何在静态方法中检测设计模式,以便调用适当的设计模式行为?

推荐的方法对于静态方法不起作用。


编辑:

静态构造函数是从XAML中调用的,因此我无法有条件地调用它(除非我将调用移动到代码后备中,但我想避免这样做)。

在窗口中:<Window ... HelpProvider.Keyword="some_help_topic.html">

在类中:

static HelpProvider()
{
    // Load the .chm file from an application setting (this fails at design time)

    // Add a WPF command binding
}

检查您的窗口设计模式,并确定是否需要在那里调用静态设置方法。 - Sergei B.
如果这对您不起作用,请提供您正在尝试使其工作的代码片段。 - Sergei B.
我以为我懂了,但是没有看到你不想使用代码后台并且你有如此奇怪的条件。很抱歉。建议使用 DesignerProperties.GetIsInDesignMode(Application.Current.MainWindow),但实际上我不知道这是否适用于你的奇怪情况。 - Akku
1个回答

4

保留 XAML 文件中的附加属性的解决方案如下:

  1. 将初始化代码从静态构造函数移到附加属性更改回调函数中。坦率地说,在静态构造函数中做这种工作不是好的实践。
  2. 在您的附加属性更改回调函数中,您可以引用您的窗口。因此,您可以在那里调用 DesignerProperties.GetIsInDesignMode(yourwindow) 来判断是否需要加载文件或任何其他可能导致问题的操作。

不错。我还没有想到如何将初始化代码移出静态构造函数。 - Mashmagar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接