Akk*_*kku 6 .net c# visual-studio-2010 visual-studio
这个问题很长一段时间 都让我感到困惑:如果Visual Studio设计者正在执行它,我可以有一个条件,否则会错误吗?
例如(WPF),我想使用一个特殊的BoolToVisibilityConverter将某些控件的visibility属性绑定到该控件上的鼠标.我使用以下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}}" />
Run Code Online (Sandbox Code Playgroud)
这导致元素在Visual Studio的设计器视图中不可见.有没有办法告诉转换器这样的事情:
#if DESIGNER
return Visibility.Visible;
#endif
return b ? Visibility.Visible : Visibility.Hidden;
Run Code Online (Sandbox Code Playgroud)
您可以使用以下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
Run Code Online (Sandbox Code Playgroud)
在Blend或Visual Studio中(我不确定它是哪一个),这将始终为false,因此您还应该包括以下检查:
isDesign = isDesign || Application.Current.GetType().Equals(typeof(Application));
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为在运行程序Application.Current中将始终是您自己的派生Application类(默认情况下:App分别在App.xaml和App.xaml.cs中定义)
| 归档时间: |
|
| 查看次数: |
2026 次 |
| 最近记录: |