2011-02-25 6 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

@ J4N - 아무 것도 묶을 필요가 없습니다. 이 스타일을 글로벌 리소스 (App.xaml)에 넣으면 응용 프로그램의 모든 레이블에 자동으로 적용됩니다 (다른 스타일이 레이블에 명시 적으로 지정되지 않은 경우). –

+0

실례합니다. 이런 종류의 것에 대해 말하고있었습니다. 패딩 = "{TemplateBinding 패딩}" 필수 항목입니까? 왜냐하면 뭔가를 표시해야하는 모든 구성 요소에 대해 그렇게해야한다면, 코드의 양을 줄이려고합니다. – J4N

3

당신이 밑줄을 두 배로 봤어 감사합니다 ..., 레이블, 텍스트 상자에 그들을 가지고 있지 않은거야?

+0

더블 언더 스코어가 싱글이 아닌 것을 왜 보여주고 있습니까? – Ahmad

+1

@Ahmad 밑줄은 다음 문자가 액세스 키임을 나타 내기 때문에 (Alt와 함께 사용됩니다; 예 : "_Ahmad"텍스트는 밑줄로 표시된 Alt + A를 통해 액세스 할 수 있습니다). 따라서 두 개의 밑줄이 이스케이프 시퀀스입니다. – SlapY

9

를 사용하여 두 개의 밑줄 :

name = "__something"; 
+0

나는 이것을 사용할 수 없다. 논문의 가치는 데이터베이스에서 왔고, 나는 모든 분야에서 이것을 할 여유가 없다. 내 필드의 대부분은 내 객체의 값에 직접적으로 적용됩니다. – J4N

+3

값 변환기를 사용하여 밑줄을 밑줄로 대체하십시오. 쉬운. – Aliostad

6

하나의 쉬운 해결책은 < 레이블 >을 사용하지 않는 것입니다. <TextBox>은 밑줄을 사용하지 않습니다.

+6

또는 TextBlock을 사용할 수 있습니다.'Content' 대신'Text'에 바인드하십시오. –

관련 문제