2011-08-31 69 views
5

我有一個文本框以編程方式添加到畫布的某個位置,並且我希望所有文本都具有dropshadoweffect,但我不希望效果應用於文本框本身的邊框。我該怎麼做呢?在文本框中添加陰影效果可將效果應用於框的邊框,並將文本「模糊」一點,但這不是我想要的,並且我無法在文本框中找到任何可以單獨爲文本添加效果的屬性。我真的不得不重新設置文本框,或者製作自己的模板來實現這個目標?如何將dropshadoweffect添加到文本框的文本中(以編程方式)

你要知道,這是一個文本框,而不是一個文本塊(在這種情況下,我只想有複製/ here粘貼)

回答

5

更新:找到一個更好的方法,你可以,如果你申請跳過Border部分Effect直接發送到ScrollViewer,將文本封裝在模板中。

<TextBox Text="Shadow Text"> 
    <TextBox.Resources> 
     <Style TargetType="ScrollViewer"> 
      <Setter Property="Effect"> 
       <Setter.Value> 
        <DropShadowEffect ShadowDepth="4" 
             Direction="330" 
             Color="Black" 
             Opacity="0.5" 
             BlurRadius="4"/> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </TextBox.Resources> 
</TextBox> 

更新2:錯過在代碼中創建的TextBox的一部分。下面是C#相當於到XAML上述

Setter effectSetter = new Setter(); 
effectSetter.Property = ScrollViewer.EffectProperty; 
effectSetter.Value = new DropShadowEffect 
{ 
    ShadowDepth = 4, 
    Direction = 330, 
    Color = Colors.Black, 
    Opacity = 0.5, 
    BlurRadius = 4 
}; 
Style dropShadowScrollViewerStyle = new Style(typeof(ScrollViewer)); 
dropShadowScrollViewerStyle.Setters.Add(effectSetter); 

TextBox dropShadowTextBox = new TextBox(); 
dropShadowTextBox.Text = "Shadow Text"; 
dropShadowTextBox.Foreground = Brushes.Teal; 
dropShadowTextBox.FontSize = 40; 
dropShadowTextBox.Margin = new Thickness(10); 
dropShadowTextBox.Resources.Add(typeof(ScrollViewer), dropShadowScrollViewerStyle); 

好問題,一個想法是讓背景和BorderBrush透明爲TextBox,並將其放置在一個Border

<Border BorderThickness="1" 
     BorderBrush="#FF7F9DB9" 
     SnapsToDevicePixels="True" 
     UseLayoutRounding="True" 
     Margin="10"> 
    <TextBox Text="Shadow Text" 
      Foreground="Teal" 
      FontSize="40" 
      Background="Transparent" 
      BorderBrush="Transparent"> 
     <TextBox.Effect> 
      <DropShadowEffect ShadowDepth="4" 
         Direction="330" 
         Color="Black" 
         Opacity="0.5" 
         BlurRadius="4"/> 
     </TextBox.Effect> 
    </TextBox> 
</Border> 

這裏與「正常」比較TextBox

enter image description here

+0

這是xaml而不是代碼,但我會管理,感謝您的出色答案,並且還爲添加的屏幕截圖 – mtijn

+1

添加了更好的方法,刪除了「Border」的使用。在模板 –

+0

+1中的ScrollViewer上設置效果,以便找到限於文本框範圍的解決方案,非常棒! – mtijn

相關問題