我在自定义WPF UserControl上搜索DesignMode
布尔值... 正确如何促使它?
我在WinForm中托管了WPF控件 。我看到“DesignerProperties”类在这种情况下不起作用。
我在构造函数中有一些逻辑在设计模式中抛出异常并想跳过该代码,因为我没有到达设计器中看到带有UserControl的Form。
我试过
private static bool? _isInDesignMode;
/// <summary>
/// Gets a value indicating whether the control is in design mode
/// (running in Blend or Visual Studio).
/// </summary>
public static bool IsInDesignModeStatic
{
get
{
if (!_isInDesignMode.HasValue)
{
#if SILVERLIGHT
_isInDesignMode = DesignerProperties.IsInDesignTool;
#else
var prop = DesignerProperties.IsInDesignModeProperty;
_isInDesignMode
= (bool)DependencyPropertyDescriptor
.FromProperty(prop, typeof(FrameworkElement))
.Metadata.DefaultValue;
#endif
}
return _isInDesignMode.Value;
}
}
但这不起作用:((我在IsInDesignModeStatic代码行的“阻止”中看到设计器异常......
答案 0 :(得分:2)
我用它来检测DesignMode(我的WPF控件在类库中定义)。
' Exit here if in Design Mode
If Assembly.GetEntryAssembly() Is Nothing Then Exit Sub
如果它不是什么都可以检查Assembly.GetEntryAssembly.FullName.ToString,并确定控件的初始化位置。
当控件在WinForms中托管时,DesignerProperties.IsInDesignModeProperty为我返回null,因为WPF不知道那里有设计师。
史蒂夫
答案 1 :(得分:1)
试试这个
if (DesignerProperties.GetIsInDesignMode(this/*this user control*/))
{
// Design-mode specific functionality
}