2017-02-21 3 views
1

을 내가하는 난에 Application.ResourcesWPF를 TabStop 텍스트 상자는 Win10

스타일이 자리를 구현하고 있기 때문에에서 사용자 지정 스타일을 포함하는 텍스트 상자와 창을 가지고, 내 WPF 응용 프로그램의 테스트를 고민하고 작동하지 그것은 탭핑을 방해했습니다 (TB 내용 대신 자리 표시 자에 초점을 맞 춥니 다). 일부 IsTabStop 코드를 추가해야했습니다.

Im 디버깅과 Win7의 exe 릴리스에서도 완벽하게 작동하지만 탭이 Win10에서 작동하지 않는다면이 스타일은 구현되지 않은 TextBoxes 및 탭 탭만 무시합니다.

도움이 될 것입니다.

<Style x:Key="placeHolderNoline" TargetType="{x:Type TextBox}" BasedOn="{StaticResource tb}"> 
      <Setter Property="IsTabStop" Value="False"/> 

      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type TextBox}"> 


         <Grid> 
          <TextBox Text="{Binding Path=Text, 
              RelativeSource={RelativeSource TemplatedParent}, 
              Mode=TwoWay, 
              UpdateSourceTrigger=PropertyChanged}" 
          x:Name="textSource" 
          Background="Transparent" 
          Panel.ZIndex="2" 
           BorderThickness="0,0,0,0"/> 


          <TextBox Text="{TemplateBinding Tag}" Background="{TemplateBinding Background}" Panel.ZIndex="1" BorderThickness="0" IsTabStop="False"> 

           <TextBox.Style> 
            <Style TargetType="{x:Type TextBox}"> 
             <Setter Property="Foreground" Value="Transparent"/> 
             <Style.Triggers> 
              <DataTrigger Binding="{Binding Path=Text, Source={x:Reference textSource}}" Value=""> 
               <Setter Property="Foreground" Value="LightGray"/> 
              </DataTrigger> 
             </Style.Triggers> 
            </Style> 
           </TextBox.Style> 
          </TextBox> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

편집 : TB 스타일하십시오 TextBoxControlTemplate 다른 두 다른 TextBox 요소가 포함되어 있지 않습니다

<Style TargetType="TextBox" x:Key="tb"> 

      <Setter Property="Foreground" Value="WhiteSmoke"/> 
      <Setter Property="Background" Value="#33FFFFFF"/> 
      <Setter Property="BorderThickness" Value="0"/> 
     </Style> 

답변

1

여기

는 스타일 코드입니다. 이전 스타일 (개체 틀이 여전히 상점 작동) 손실 있지만,

<Style x:Key="placeHolderNoline" TargetType="TextBox" BasedOn="{StaticResource tb}"> 
    <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/> 
    <Setter Property="BorderBrush" Value="#FFABAdB3"/> 
    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type TextBox}"> 
       <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True"> 
        <Grid> 
         <TextBlock Text="{TemplateBinding Tag}" Foreground="LightGray" Background="{TemplateBinding Background}"> 
          <TextBlock.Style> 
           <Style TargetType="{x:Type TextBlock}"> 
            <Setter Property="Visibility" Value="Collapsed"/> 
            <Style.Triggers> 
             <DataTrigger Binding="{Binding Path=Text, RelativeSource={RelativeSource AncestorType=TextBox}}" Value=""> 
              <Setter Property="Visibility" Value="Visible"/> 
             </DataTrigger> 
            </Style.Triggers> 
           </Style> 
          </TextBlock.Style> 
         </TextBlock> 
         <ScrollViewer x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/> 
        </Grid> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsEnabled" Value="false"> 
         <Setter Property="Opacity" TargetName="border" Value="0.56"/> 
        </Trigger> 
        <Trigger Property="IsMouseOver" Value="true"> 
         <Setter Property="BorderBrush" TargetName="border" Value="#FF7EB4EA"/> 
        </Trigger> 
        <Trigger Property="IsKeyboardFocused" Value="true"> 
         <Setter Property="BorderBrush" TargetName="border" Value="#FF569DE5"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

이 두 창에 근무 :

이 스타일을 시도하십시오. 코드를 확인하기 위해 잠시만 기다려주십시오. – someone1

+0

좋아요, 배경을 적용중인'BasedOn = "{StaticResource tb}"는 지금 작동하지 않습니다. 어떤 아이디어? – someone1

+0

질문을 편집하고 "tb"스타일의 내용을 포함하십시오. – mm8