[英]how to add dropshadoweffect to just the text of a textbox (programmatically)
我有一個通過編程方式添加到畫布上的文本框,我希望所有文本都具有陰影效果,但是我不希望該效果應用於文本框本身的邊框。 我該怎么做呢? 向文本框添加dropshadoweffect會將效果應用於框的邊框,並稍微“模糊”文本,但這不是我想要的,並且我無法在文本框上找到任何可以單獨為文本添加效果的屬性。 我真的必須重新設置文本框樣式或制作自己的模板來實現此目的嗎?
請注意,這是一個文本框,而不是文本塊(在這種情況下,我將只從此處復制/粘貼)
更新:找到了一種更好的方法,如果將Effect
直接應用於將文本封裝在模板中的ScrollViewer
,則可以跳過“ Border
部分。
<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
的部分。 這是與上述Xaml等效的c#
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);
好問題,一個想法是使TextBox
的Background和BorderBrush透明並將其放置在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
的比較
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.