c# – Visual Studio:条件“if(InDesigner)”
发布时间:2020-12-15 03:56:33 所属栏目:百科 来源:网络整理
导读:很长一段时间以来,这个问题一直困扰着我: 如果Visual Studio设计器正在执行它,我可以有一个条件,否则为false? 例如(WPF),我想使用一个特殊的BoolToVisibilityConverter将某些控件的visibility属性绑定到该控件上的鼠标.我使用以下XAML代码执行此操作: Ima
很长一段时间以来,这个问题一直困扰着我:
如果Visual Studio设计器正在执行它,我可以有一个条件,否则为false? 例如(WPF),我想使用一个特殊的BoolToVisibilityConverter将某些控件的visibility属性绑定到该控件上的鼠标.我使用以下XAML代码执行此操作: <Image Width="50" Height="50" Source="../Images/MB_0010_tasks.ico" Margin="12,133,12" MouseLeftButtonUp="Image_MouseLeftButtonUp" Visibility="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Grid}},Path=IsMouSEOver,Converter={StaticResource __boolToVisibilityConverter}}" /> 这导致元素在Visual Studio的设计器视图中不可见.有没有办法告诉转换器这样的事情: #if DESIGNER return Visibility.Visible; #endif return b ? Visibility.Visible : Visibility.Hidden; 解决方法
您可以使用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)); 这是有效的,因为在运行程序中,Application.Current将始终是您自己的派生Application类(默认情况下:App,分别在App.xaml和App.xaml.cs中定义) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |