2012-02-22 22 views
10

मुझे समस्या है जहां मेरे पास डेटाग्रिड कॉलम हैडर है जो सामग्री के रूप में अंडरस्कोर के साथ पाठ प्राप्त कर रहा है, और पहला अंडरस्कोर तब तक छिपा हुआ है जब तक आप alt ("data_grid_thing" को 'datagrid_thing' के रूप में प्रदर्शित नहीं करते हैं))। मैंने थोड़ी देर के लिए खोज की, और लेबल्स के लिए इस समस्या के कुछ समाधान पाए, क्योंकि यदि आप गलत पहचानने के लिए पहचान स्वीकार करते हैं, तो टेक्स्ट को 'एक्सेसटेक्स्ट' नहीं माना जाएगा (हालांकि यह डेटाग्रिड कॉलमहेडर के लिए काम नहीं करता है, जैसा कि यह अन्य सभी स्टाइल को हटा देता है, और इसलिए इसके अंदर टेक्स्ट के साथ हेडर की जगह, मुझे बस टेक्स्ट के साथ व्हाइटस्पेस मिलता है। मैंने आधारितऑन प्रॉपर्टी का उपयोग करने के साथ-साथ कोई प्रभाव नहीं डाला।डेटाग्रिड कॉलम में पहले अंडरस्कोर

मैं या तो समाधान के लिए खुला हूं सी # पक्ष (किसी भी तरह से पहचान पहचानने योग्य संपत्ति को संशोधित करना एनजी सामग्री प्रदाता शायद), या एक्सएएमएल के संशोधन के माध्यम से (डिफ़ॉल्ट शैली को संरक्षित करने के लिए एक रास्ता तलाशना)।

मेरे XAML इस तरह दिखता है:

<Style x:Key="DataGridColumnHeaderStyle" BasedOn="{StaticResource {x:Type DataGridColumnHeader}}" TargetType="{x:Type DataGridColumnHeader}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="DataGridColumnHeader"> 
        <Border> 
         <ContentPresenter 
          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
          VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
          RecognizesAccessKey="False" /> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

धन्यवाद!

+0

आह मैं इस लिंक करने के लिए भूल गया: http://stackoverflow.com/questions/40733/disable-wpf-label-accelerator-key-text-underscore-is-missing यह एक समाधान के लिए निकटतम बात थी मैं मूल समस्या को ठीक कर सकता हूं, लेकिन ऊपर वर्णित स्टाइलिंग समस्या का कारण बन सकता हूं। – Stuart

+0

वास्तव में इसे पुन: उत्पन्न नहीं कर सकता है, ऐसा लगता है कि मेरे लिए एक असम्बद्ध डेटाग्रिड में टेक्स्ट रूपांतरण का उपयोग नहीं किया जा रहा है ... –

+0

[WPF listbox का संभावित डुप्लिकेट। तारों में अंडरस्कोर प्रतीकों को छोड़ें] (http://stackoverflow.com/questions/4601801/wpf-listbox-skip-underscore-symbols-in-strings) – phoog

उत्तर

8

यह blog post कहता है कि आप अंडरस्कोर से इसे दोगुना करके बच सकते हैं: "data__grid_thing"

एक और दृष्टिकोण this question

+1

स्ट्रिंग का संशोधन दुख की बात नहीं है। – Stuart

+1

@ स्टुअर्ट लिंक में सुझाए गए टेक्स्टब्लॉक में स्ट्रिंग को प्रदर्शित करने के बारे में क्या है? – phoog

+0

हाँ, यह काम किया! धन्यवाद! यह किसी अन्य कोड के कारण थोड़ा सा सुरुचिपूर्ण है, लेकिन भयानक नहीं है। – Stuart

7

यह accesskey से निपटने की वजह से करने के लिए स्वीकार किए जाते हैं जवाब में पाया जा सकता। डाटाग्रिड हेडर में अंडरस्कोर से अस्थायी रूप से बचने के लिए बस इस तरह एक इवेंट हैंडलर लिखें।

private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) 
{ 
    string header = e.Column.Header.ToString(); 

    // Replace all underscores with two underscores, to prevent AccessKey handling 
    e.Column.Header = header.Replace("_", "__"); 
} 
संबंधित मुद्दे