WPF

2011-02-25 20 views
15

में अंडरस्कोर प्रदर्शित नहीं होते हैं मेरे पूरे एप्लिकेशन पर, मेरे पास कुछ अंडरस्कोर (_) हैं जो प्रदर्शित नहीं होते हैं।WPF

यह एक्सेसर के कारण है। लेकिन मैं इसे कैसे अक्षम कर सकता हूं? आवेदन चौड़ा है? मैं, लेबल, बक्सें पर उन्हें नहीं है ...

धन्यवाद

+0

संभावित डुप्लिकेट [WPF लेबल त्वरक कुंजी अक्षम करें (टेक्स्ट अंडरस्कोर गुम है)] (http://stackoverflow.com/questions/40733/disable-wpf-label-accelerator-key-text-underscore-is-missing) – Carl

उत्तर

16

अक्षम करने के लिए सभी लेबल के लिए विश्व स्तर पर रेखांकित आप इस तरह लेबल के लिए डिफ़ॉल्ट टेम्पलेट ओवरराइड कर सकते हैं:

<Style x:Key="{x:Type Label}" 
     TargetType="{x:Type Label}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Label}"> 
       <Border Background="{TemplateBinding Background}" 
         BorderThickness="{TemplateBinding BorderThickness}" 
         BorderBrush="{TemplateBinding BorderBrush}" 
         Padding="{TemplateBinding Padding}" 
         SnapsToDevicePixels="true"> 
        <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
             VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
             RecognizesAccessKey="False" 
             SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsEnabled" 
          Value="false"> 
         <Setter Property="Foreground" 
           Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" /> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

यह इस पंक्ति में डिफ़ॉल्ट टेम्पलेट से अलग है: RecognizesAccessKey="False"

इस शैली को अपने एप्लिकेशन के वैश्विक संसाधनों में रखें (App.xaml) और आपके लेबल अब अंडरस्कोर को पहचान नहीं पाएंगे।

+0

हाय! आपकी प्रतिक्रिया के लिए धन्यवाद! मैं आज कोशिश करूँगा, लेकिन ऐसा लगता है कि मुझे क्या चाहिए। क्या डिफ़ॉल्ट मानों को बांधना अनिवार्य है? – J4N

+0

@ जे 4 एन - आपको कुछ भी बांधने की आवश्यकता नहीं है। बस इस शैली को वैश्विक संसाधनों (App.xaml में) में रखें और यह आपके एप्लिकेशन में सभी लेबलों पर स्वचालित रूप से लागू हो जाएगा (जब तक कि अन्य शैली स्पष्ट रूप से किसी लेबल पर निर्दिष्ट न हो)। –

+0

क्षमा करें, मैं इस तरह की चीजों के बारे में बात कर रहा था: पैडिंग = "{टेम्पलेट बाइंडिंग पैडिंग}" क्या वे अनिवार्य हैं? क्योंकि अगर मुझे ऐसा कुछ घटकों के लिए करना है जो कुछ प्रदर्शित करना चाहते हैं, तो मैं – J4N

3

आप अंडरस्कोर दोहरीकरण की कोशिश की?

+0

ऐसा क्यों हो रहा है कि डबल अंडरस्कोर एकल नहीं दिखा रहा है? – Ahmad

+1

@ अहमद क्योंकि अंडरस्कोर इंगित करता है कि अगला अक्षर एक्सेस कुंजी है (Alt के साथ प्रयोग किया जाता है, उदाहरण के लिए पाठ "_ अहमद" इसे अंडरलाइन द्वारा इंगित किए गए Alt + A के माध्यम से एक्सेस करने की अनुमति देगा)। तो दो अंडरस्कोर भागने अनुक्रम हैं। – SlapY

9

उपयोग दो अंडरस्कोर:

name = "__something"; 
+0

मैं इसका उपयोग नहीं कर सकता, मान मान डेटाबेस से आता है, और मैं बस मुझे हर क्षेत्र में ऐसा करने का जोखिम नहीं उठा सकता। और मेरे अधिकांश फ़ील्ड सीधे मेरी वस्तुओं के मूल्य पर सीमित हैं। – J4N

+3

डबल अंडरस्कोर के साथ अंडरस्कोर को प्रतिस्थापित करने के लिए एक मान कनवर्टर का उपयोग करें। आसान। – Aliostad

6

एक आसान समाधान < लेबल > का उपयोग नहीं करना है। < टेक्स्टबॉक्स > अंडरस्कोर के साथ गड़बड़ नहीं करता है।

+6

या टेक्स्टब्लॉक अगर आप संपादन योग्य कुछ के साथ सौदा नहीं करना चाहते हैं।'सामग्री' के बजाय 'टेक्स्ट' से बांधें। –

संबंधित मुद्दे