मेरे पास कुछ कार्यक्षमता का परीक्षण करने के लिए कुछ उपयोगी wpf बटन हैं। यह अच्छा होगा कि उन्हें रिलीज में न दिखाएं लेकिन वास्तव में डीबग में।डीबग मोड में WPF शो नियंत्रण केवल
कोड से इसे करना आसान है। लेकिन मैं एक घोषणात्मक समाधान पसंद करूंगा।
मेरे पास कुछ कार्यक्षमता का परीक्षण करने के लिए कुछ उपयोगी wpf बटन हैं। यह अच्छा होगा कि उन्हें रिलीज में न दिखाएं लेकिन वास्तव में डीबग में।डीबग मोड में WPF शो नियंत्रण केवल
कोड से इसे करना आसान है। लेकिन मैं एक घोषणात्मक समाधान पसंद करूंगा।
एकमात्र समाधान मैं जानता हूँ कि इस तरह कहीं एक स्थिर संपत्ति बनाने के लिए है
<MyControl Visibility="{x:Static local:MyType.IsDebug}" />
XAML संकलक के लिए कुछ भी नहीं है झंडे।
जहां तक मुझे पता है कि एक्सएएमएल से कॉन्फ़िगरेशन स्थिरांक (डीबग, रिलीज) का उपयोग करने का कोई तरीका नहीं है।
तो सबसे अच्छा आप प्राप्त कर सकते हैं बटनों की दृश्यता संपत्ति को अपने डेटाकॉन्टेक्स्ट पर डीबग संपत्ति में बांधना है। लेकिन उस संपत्ति को स्थापित करने के लिए अभी भी कुछ कोड की आवश्यकता होगी। तब
public static Visibility IsDebug
{
#if DEBUG
get { return Visibility.Visible; }
#else
get { return Visibility.Collapsed; }
#endif
}
इस तरह XAML में इसका इस्तेमाल करते हैं:
हो सकता है कि एक कस्टम तत्व या विशेषता? मैं डब्ल्यूपीएफ के लिए काफी नया हूं इसलिए इस "विचार" को गंभीरता से न लें। – naeron84
सुनिश्चित नहीं हैं कि अंतर यह और स्टीवन के दृष्टिकोण के बीच है, लेकिन मैं एक गैर स्थैतिक कक्षा में एक गैर स्थिर संपत्ति के रूप में उसकी संपत्ति का इस्तेमाल किया, और इस तरह है जैसे कि यह संदर्भित:
<local:MyClass x:Key="MyClass" />
<MyControl Visibility="{Binding IsDebug, Source={StaticResource MyClass}, Mode=OneTime}" />
यह दिखा देंगे जब डीबगर संलग्न होता है। सबसे पहले, नाम स्थान सेट:
<BooleanToVisibilityConverter x:Key="BoolToVisibilityConverter"/>
तो का उपयोग बाध्यकारी:
<MenuItem Header="onlyIfDebuggerAttached" Visibility="{Binding Source={x:Static diag:Debugger.IsAttached}, Converter={StaticResource 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>
मैंने कनवर्टर का उपयोग किया, लेकिन यह तरीका अधिक कुशल – pjdupreez
है यदि सिस्टम को बाध्यकारी है। डायग्नोस्टिक्स.डिबगर। आईएसएटैचड जो आप खोज रहे हैं उसके लिए पर्याप्त है, नीचे 2 उत्तरों देखें – DanW