Cập nhật: Tìm thấy một cách tốt hơn, bạn có thể bỏ qua phần Border
nếu bạn áp dụng các Effect
trực tiếp đến ScrollViewer
đóng gói văn bản trong Mẫu.
<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>
Cập nhật 2: nhỡ phần của việc tạo ra các TextBox
trong mã. Đây là C# tương đương với XAML trên
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);
Tốt câu hỏi, một ý tưởng là làm cho Bối cảnh và BorderBrush Transparent cho TextBox
và đặt nó trong một 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>
Đây là so sánh với "bình thường" TextBox
Nguồn
2011-08-31 12:54:10
đó là xaml chứ không phải là mã nhưng tôi sẽ quản lý, cảm ơn câu trả lời xuất sắc và cũng cho ảnh chụp màn hình được thêm – mtijn
Thêm phương pháp tốt hơn, loại bỏ việc sử dụng 'Biên giới'. Đặt hiệu ứng trên 'ScrollViewer' trong mẫu –
+1 để tìm giải pháp giới hạn trong phạm vi của hộp văn bản, tuyệt vời! – mtijn