일부 기능을 테스트하는 데 유용한 wpf 버튼이 있습니다. 릴리스시에는 표시하지 말고 디버그에서는 실제로 표시하는 것이 좋습니다.WPF는 디버그 모드에서만 컨트롤을 표시합니다.
코드를 사용하면 쉽습니다. 하지만 선언적 솔루션을 선호합니다.
일부 기능을 테스트하는 데 유용한 wpf 버튼이 있습니다. 릴리스시에는 표시하지 말고 디버그에서는 실제로 표시하는 것이 좋습니다.WPF는 디버그 모드에서만 컨트롤을 표시합니다.
코드를 사용하면 쉽습니다. 하지만 선언적 솔루션을 선호합니다.
내가 아는 유일한 해결책은이 같은 곳 정적 속성을 만드는 것입니다
<MyControl Visibility="{x:Static local:MyType.IsDebug}" />
XAML은 컴파일러 아무것도하지 않습니다 플래그.
<local:MyClass x:Key="MyClass" />
<MyControl Visibility="{Binding IsDebug, Source={StaticResource MyClass}, Mode=OneTime}" />
내가 아는 한 XAML의 Configuration 상수 (Debug, Release)를 사용할 방법이 없습니다.
여러분이 얻을 수있는 최선의 방법은 버튼의 Visibility 속성을 datacontext의 Debug 속성에 바인딩하는 것입니다. 그러나 해당 속성을 설정하는 데는 여전히 일부 코드가 필요합니다. 그런 다음
public static Visibility IsDebug
{
#if DEBUG
get { return Visibility.Visible; }
#else
get { return Visibility.Collapsed; }
#endif
}
을 다음과 같이 XAML에서 사용 :
는아마 사용자 정의 요소 또는 속성? 저는 WPF에 대해 매우 익숙합니다. 따라서이 "아이디어"를 진지하게 생각하지 마십시오. – naeron84
확실하지 않음 디버거가 연결될 때.
이<MenuItem Header="onlyIfDebuggerAttached" Visibility="{Binding Source={x:Static diag:Debugger.IsAttached}, Converter={StaticResource BoolToVisibilityConverter}}" />
이 표시됩니다 : 차이가이 스티븐의 접근 방식 사이,하지만 난이 아닌 정적 클래스의 비 정적 속성으로 자신의 재산을 사용, 등처럼 참조 무엇
스티븐의 답변에 따라 ... 당신은 정적을 사용할 수 있습니다
<BooleanToVisibilityConverter x:Key="BoolToVisibilityConverter"/>
는 다음 바인딩을 사용
xmlns:diag="clr-namespace:System.Diagnostics;assembly=mscorlib"
는 다음 자원을 설정 : 첫째, 네임 스페이스를 설정 클래스를 선언하고 가시성을 한 번만 선언하십시오.
using System.Windows;
namespace HQ.Wpf.Util
{
/* Usage:
xmlns:wpfUtil="clr-namespace:HQ.Wpf.Util;assembly=WpfUtil"
<Button Name="CmdTest" Click="CmdTestOnClick" Visibility="{x:Static wpfUtil:DebugVisibility.DebugOnly}">Test</Button>
*/
public static class DebugVisibility
{
public static Visibility DebugOnly
{
#if DEBUG
get { return Visibility.Visible; }
#else
get { return Visibility.Collapsed; }
#endif
}
public static Visibility ReleaseOnly
{
#if DEBUG
get { return Visibility.Collapsed; }
#else
get { return Visibility.Visible; }
#endif
}
}
}
XAML :
<Button Name="CmdTest" Click="CmdTestOnClick"
Visibility="{x:Static wpfUtil:DebugVisibility.DebugOnly}">Test
</Button>
변환기를 사용했는데, System.Diagnostics.Debugger.IsAttached에 대한 바인딩이 적절한 경우 – pjdupreez
보다 효율적입니다. 아래 2 답변을 참조하십시오. – DanW