C# Visual Studio:条件“;如果(指定人)“;
这个问题一直困扰着我: 如果Visual Studio设计器正在执行一个条件,那么该条件是否为true,否则为false? 例如(WPF),我想使用一个特殊的booltVisibilityConverter将某些控件的可见性属性绑定到该控件上的鼠标。我使用以下XAML代码执行此操作:C# Visual Studio:条件“;如果(指定人)“;,c#,.net,visual-studio,visual-studio-2010,C#,.net,Visual Studio,Visual Studio 2010,这个问题一直困扰着我: 如果Visual Studio设计器正在执行一个条件,那么该条件是否为true,否则为false? 例如(WPF),我想使用一个特殊的booltVisibilityConverter将某些控件的可见性属性绑定到该控件上的鼠标。我使用以下XAML代码执行此操作: <Image Width="50" Height="50" Source="../Images/MB_0010_tasks.ico" Margin="12,133,133,12" MouseLeftButto
<Image Width="50" Height="50" Source="../Images/MB_0010_tasks.ico" Margin="12,133,133,12" MouseLeftButtonUp="Image_MouseLeftButtonUp"
Visibility="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Grid}}, Path=IsMouseOver, Converter={StaticResource __boolToVisibilityConverter}}" />
对于WPF应用程序,您可以尝试以下操作:
if ((bool)(DesignerProperties.IsInDesignModeProperty.GetMetadata(typeof(DependencyObject)).DefaultValue))
{
// If we're here it's the design mode
}
您可以使用
System.ComponentModel.DesignerProperties.GetIsInDesignMode()
方法:
// In WPF:
var isDesign = DesignerProperties.GetIsInDesignMode(Application.Current.MainWindow);
// In Silverlight:
var isDesign = DesignerProperties.GetIsInDesignMode(Application.Current.RootVisual);
if(isDesign)
{
// designer code
return;
}
// non designer code
在Blend或Visual Studio(我不确定是哪一个)中,这将始终为false,因此您还应包括以下检查:
isDesign = isDesign || Application.Current.GetType().Equals(typeof(Application));
这是因为在运行的程序
应用程序中。当前的将始终是您自己的派生应用程序类(默认情况下:App
,分别在App.xaml和App.xaml.cs中定义)工作起来很有魅力,尤其是在我的BooltVisibilityConverter中。非常感谢+1.最后,一些有用的东西!GetIsInDesignMode开始返回false,但上次检查成功了,谢谢!
isDesign = isDesign || Application.Current.GetType().Equals(typeof(Application));