2013-10-15 75 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?

您需要使用EventTrigger得到你想要使用XAML唯一的功能。請注意,要使它工作,您應該將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