【问题标题】:How to get a drop shadow from a Tool tip WPF?如何从工具提示 WPF 中获取投影?
【发布时间】:2020-07-19 22:09:48
【问题描述】:

这是我通过控制模板制作的代码。我尝试 但它不能正常工作。任何人都知道如何在定制的工具提示中实现投影。我尝试在模板中添加边框,以便出现阴影但仍然没有阴影。

        <Style x:Key="{x:Type ToolTip}"
   TargetType="ToolTip">
            <Setter Property="OverridesDefaultStyle"
      Value="True" />
            <Setter Property="HasDropShadow" 
      Value="True" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ToolTip}">

                        <Grid x:Name="grid" >
                            <Border x:Name="Border" Margin="0,0,0,0"
            BorderThickness="0.5"
                                
            Width="{TemplateBinding Width}"
            Height="19">
                                <Border.Background>
                                    <LinearGradientBrush StartPoint="0,0"
                             EndPoint="0,1">
                                        <LinearGradientBrush.GradientStops>
                                            <GradientStopCollection>
                                                <GradientStop Color="White"
                            Offset="0.0" />
                                                <GradientStop Color="White"
                            Offset="1.0" />
                                            </GradientStopCollection>
                                        </LinearGradientBrush.GradientStops>
                                    </LinearGradientBrush>

                                </Border.Background>
                                <Border.BorderBrush>
                                    <SolidColorBrush Color="Gray" />

                                </Border.BorderBrush>


                                <Border.Effect>

                                    <DropShadowEffect ShadowDepth="6" Direction="135" Color="Maroon" Opacity="0.35" BlurRadius="0.0"/>

                                </Border.Effect>



                                <ContentPresenter Margin="4,0"
                        HorizontalAlignment="Left"
                        VerticalAlignment="Top" />
                            </Border>


                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="HasDropShadow" Value="True" >

                                <Setter TargetName="Border"
                Property="CornerRadius"
                Value="0" />
                                <Setter TargetName="Border"
                Property="SnapsToDevicePixels"
                Value="true" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

【问题讨论】:

  • 为什么是C标签?看起来是 .Net

标签: wpf xaml tooltip border dropshadow


【解决方案1】:

Border.Background 的效果覆盖了 Border.Effect 的效果。你将所有 GradientStop 设置为“白色”,效果与这里只是将背景设置为白色相同。要查看阴影,可以设置将 Grid 的背景变为白色并删除 Border.Background 的部分。这是我编辑的 Grid 部分:

<Grid x:Name="grid" Background="White" >
                        <Border x:Name="Border" Margin="0,0,0,0" BorderThickness="0.5" Width="{TemplateBinding Width}" Height="19">
                            <Border.BorderBrush>
                                <SolidColorBrush Color="Gray" />
                            </Border.BorderBrush>
                            <Border.Effect>
                                <DropShadowEffect ShadowDepth="6" Direction="135" Color="Maroon" Opacity="0.35" BlurRadius="0.0"/>
                            </Border.Effect>
                            <ContentPresenter Margin="4,0" HorizontalAlignment="Left" VerticalAlignment="Top" />
                        </Border></Grid>

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 2015-09-16
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    相关资源
    最近更新 更多