Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Visual Studio:条件“;如果(指定人)“;_C#_.net_Visual Studio_Visual Studio 2010 - Fatal编程技术网

C# Visual Studio:条件“;如果(指定人)“;

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

这个问题一直困扰着我: 如果Visual Studio设计器正在执行一个条件,那么该条件是否为true,否则为false?

例如(WPF),我想使用一个特殊的booltVisibilityConverter将某些控件的可见性属性绑定到该控件上的鼠标。我使用以下XAML代码执行此操作:

<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));