WPF

2011-02-25 8 views
15

İçerisinde görüntülenmeyen alt çizgiler Tüm uygulamamda, görüntülenmeyen bazı altçizgi (_) var.WPF

Erişim sağlayıcıdan kaynaklanıyor. Ama nasıl devre dışı bırakabilirim? Uygulama geniş mi? Ben

+0

olası kopyası [WPF etiket hızlandırıcı anahtarını devre dışı bırak (metin alt çizgi eksiktir)] (http://stackoverflow.com/questions/40733/disable-wpf-label-accelerator-key-text-underscore-is-missing) – Carl

cevap

16

devre dışı bırakmak için böyle etiketler için varsayılan şablonu geçersiz kılabilir tüm etiketlerin global altını:

<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> 

Bu çizgide varsayılan şablonu farklıdır: RecognizesAccessKey="False".

Bu stili uygulamanızın global kaynaklarına yerleştirin (App.xaml) ve etiketleriniz artık alt çizgi tanımamayacaktır.

+0

Merhaba! Cevabınız için teşekkürler! Bunu bugün deneyeceğim ama ihtiyacım olan şey gibi görünüyor. Varsayılan değerleri bağlamak zorunlu mudur? – J4N

+0

@ J4N - Hiçbir şey bağlamanıza gerek yoktur. Bu stili global kaynaklara (App.xaml) koymanız yeterlidir ve uygulamanızda tüm etiketlere otomatik olarak uygulanacaktır (başka bir stil bir etikette açıkça belirtilmedikçe). –

+0

Özür dilerim, bu tür şeyler hakkında konuşuyordum: Dolgu = "{TemplateBinding Padding}" Bunlar zorunlu mudur? Eğer bir şeyi görüntülemesi gereken tüm bileşenler için bunu yapmam gerekirse, bunun için kod miktarını azaltmak istiyorum – J4N

3

Eğer çizgi iki katına denediniz teşekkür ederim ..., etiketler, metin kutularına bunları yok mu?

+0

neden çift alt çizgi tek değil gösteren oluyor? – Ahmad

+1

@Ahmad altyazı, bir sonraki harfin erişim anahtarı olduğunu gösterir (Alt ile kullanılır; örn. Metin "_Ahmad" alt + A ile alt satırda belirtildiği gibi erişmeye izin verir). Yani iki alt çizgi kaçış dizisidir. – SlapY

9

Kullanım iki alt çizgiler:

name = "__something"; 
+0

Bunu kullanamıyorum, tezler veri tabanından geliyor ve bunu her alanda yapmam için bana param yetmiyor. Ve çoğu alanım doğrudan nesnelerimin değeriyle sınırlıdır. – J4N

+3

Alt çizgiyi çift alt çizgi ile değiştirmek için bir değer dönüştürücü kullanın. Kolay. – Aliostad

6

Kolay bir çözüm, <Etiket> ürününü kullanmamaktır. <TextBox> altçizgi ile karışmaz.

+6

veya TextBlock.İçerik 'yerine' Metin 'ye bağlanır. –