WPF仅在调试模式下显示控件

nae*_*n84 21 .net wpf

我有一些有用的wpf按钮来测试一些功能.最好不要在发布中显示它们,而是在调试中显示它们.

从代码中完成它很容易.但我更喜欢声明性的解决方案.

Ste*_*ven 25

我所知道的唯一解决方案是在这样的地方创建一个静态属性:

    public static Visibility IsDebug
    {
#if DEBUG
        get { return Visibility.Visible; }
#else
        get { return Visibility.Collapsed; }
#endif
    }
Run Code Online (Sandbox Code Playgroud)

然后在XAML中使用它,如下所示:

<MyControl Visibility="{x:Static local:MyType.IsDebug}" />
Run Code Online (Sandbox Code Playgroud)

XAML没有任何编译器标志.


Dan*_*anW 12

这将显示附加调试器的时间.首先,设置命名空间:

xmlns:diag="clr-namespace:System.Diagnostics;assembly=mscorlib"
Run Code Online (Sandbox Code Playgroud)

然后设置你的资源:

    <BooleanToVisibilityConverter x:Key="BoolToVisibilityConverter"/>
Run Code Online (Sandbox Code Playgroud)

然后使用绑定:

<MenuItem Header="onlyIfDebuggerAttached" Visibility="{Binding Source={x:Static diag:Debugger.IsAttached}, Converter={StaticResource BoolToVisibilityConverter}}" />
Run Code Online (Sandbox Code Playgroud)