2013-10-15 5 views
0

"텍스트 블록"과 같은 "텍스트 상자"가 있습니다. 텍스트 상자를 두 번 클릭하여 편집 기능을 활성화합니다. 이제는 텍스트 상자를 두 번 클릭 할 때 약간의 색상으로 텍스트 상자 테두리를 강조 표시하려고합니다. 스타일을 코드에만 적용해야합니다. 나는 그것을 어떻게 하는가? 나는 두께로 시도했다. 그러나 나는 청초하고 깨끗한 것을 원합니다.텍스트 상자 - wpf의 편집 스타일

나는 내가 시도한 코드를 제공했다.

textBox.IsReadOnly = false; 
textBox.SelectAll(); 
textBox.BorderThickness = new Thickness(1); 

여기서 도와 줄 수 있습니까?

+0

WPF의 절차 코드에서 UI 요소를 조작하지 마십시오. 그것이 바로 XAML입니다. 'Style.Triggers' 또는 다른 일반적인 WPF 메커니즘을 사용하십시오. –

+0

예. 하지만 코드를 조작해야합니다. –

+0

@ shahulhammed 아니, 그럴 필요 없어. 수천 개의 WPF UI를 만들었으며 절차 코드에서 UI 요소를 조작 할 필요가 거의 없습니다. XAML을 사용하십시오. –

답변

1

이 유사하게 나타납니다 EventTrigger with Setter in WPF?

당신은 당신이 단지 XAML을 사용하여 원하는 기능을 얻을 수 EventTrigger를 사용해야합니다. 작동 시키려면 BorderThickness의 값을 1이 아닌 값으로 변경해야합니다. 기본값이 1이면 표준 3D 테두리가 표시됩니다.

  <TextBox x:Name="tb" Width="150" Height="30" IsReadOnly="True" Text="Double click to type" 
      BorderBrush="Black" BorderThickness="0.99"> 
      <TextBox.Triggers> 
      <EventTrigger RoutedEvent="TextBox.MouseDoubleClick" SourceName="tb"> 
       <BeginStoryboard> 
        <Storyboard> 
         <ObjectAnimationUsingKeyFrames Duration="0" 
            Storyboard.TargetProperty="(TextBox.IsReadOnly)"> 
          <DiscreteObjectKeyFrame KeyTime="0"> 
           <DiscreteObjectKeyFrame.Value> 
            <sys:Boolean>False</sys:Boolean> 
           </DiscreteObjectKeyFrame.Value> 
          </DiscreteObjectKeyFrame> 
         </ObjectAnimationUsingKeyFrames> 
        </Storyboard> 
        </BeginStoryboard> 
        <BeginStoryboard> 
         <Storyboard> 
          <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBox.BorderBrush).Color"> 
           <EasingColorKeyFrame KeyTime="0:0:0.1" Value="Red"/> 
          </ColorAnimationUsingKeyFrames> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger> 
      <EventTrigger RoutedEvent="TextBox.LostFocus" SourceName="tb"> 
       <BeginStoryboard> 
        <Storyboard> 
         <ObjectAnimationUsingKeyFrames Duration="0" 
            Storyboard.TargetProperty="(TextBox.IsReadOnly)"> 
          <DiscreteObjectKeyFrame KeyTime="0"> 
           <DiscreteObjectKeyFrame.Value> 
            <sys:Boolean>True</sys:Boolean> 
           </DiscreteObjectKeyFrame.Value> 
          </DiscreteObjectKeyFrame> 
         </ObjectAnimationUsingKeyFrames> 
        </Storyboard> 
       </BeginStoryboard> 
        <BeginStoryboard> 
         <Storyboard> 
          <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBox.BorderBrush).Color"> 
           <EasingColorKeyFrame KeyTime="0:0:0.1" Value="Black"/> 
          </ColorAnimationUsingKeyFrames> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger> 
     </TextBox.Triggers>     
    </TextBox> 
+0

iT WORKD. 하지만 텍스트 상자를 두 번 클릭하면 테두리 색을 변경하는 방법 –

+0

경계선 색 이야기 보드를 여기에 추가하는 방법은 무엇입니까? –

+0

'ColorAnimationUsingKeyFrames'가 필요합니다. 제 대답을 업데이트했습니다. 이것을 확인하십시오! – lena