首页 > 其他分享 >给控件添加阴影效果SystemDropShadowChrome

给控件添加阴影效果SystemDropShadowChrome

时间:2024-10-10 20:01:17浏览次数:8  
标签:控件 效果 SystemDropShadowChrome 阴影 添加 引用

引入命名空间

  xmlns:theme="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero2"

给控件添加引用,这个性能比较好。

例如给Combobox下拉框添加引用效果

<--! 其他代码-->
  <Popup x:Name="PART_Popup" AllowsTransparency="true" Grid.ColumnSpan="2" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" Placement="Bottom" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}">
                <theme:SystemDropShadowChrome x:Name="shadow"
                                              Color="Transparent"
                                              RenderTransformOrigin ="5,5"
                                              CornerRadius="4"
                                              MinWidth="{Binding ActualWidth, ElementName=templateRoot}"
                                              MaxHeight="{TemplateBinding MaxDropDownHeight}">
<--!      Margin="10,10,0,0" 这个是重点,显示左边和上边的阴影,默认左下角就有阴影-->
                    <Border x:Name="dropDownBorder"  
                            Margin="10,10,0,0"
                             CornerRadius="4"
                            Padding="10"
                            Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"
                            BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}"  >
                      
                        <ScrollViewer x:Name="DropDownScrollViewer">
                            <Grid x:Name="grid" RenderOptions.ClearTypeHint="Enabled">
                                <Canvas x:Name="canvas" HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0">
                                    <Rectangle x:Name="opaqueRect" Fill="{Binding Background, ElementName=dropDownBorder}" Height="{Binding ActualHeight, ElementName=dropDownBorder}" Width="{Binding ActualWidth, ElementName=dropDownBorder}"/>
                                </Canvas>
                                <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                            </Grid>
                        </ScrollViewer>
                    </Border>
                </theme:SystemDropShadowChrome>
            </Popup>
<--! 其他代码-->

效果如下:

 

 阴影样式二

 
Margin="8,8,-2,-2" 这个是重点 控制阴影,显示左边和上边的阴影,调整左下角的阴影。
<--! 其他代码-->
  <Popup x:Name="PART_Popup" AllowsTransparency="true" Grid.ColumnSpan="2" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" Placement="Bottom" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}">
                <theme:SystemDropShadowChrome x:Name="shadow"
                                              Color="Transparent"
                                              RenderTransformOrigin ="5,5"
                                              CornerRadius="4"
                                              MinWidth="{Binding ActualWidth, ElementName=templateRoot}"
                                              MaxHeight="{TemplateBinding MaxDropDownHeight}">
<--!       Margin="8,8,-2,-2" 这个是重点 控制阴影,显示左边和上边的阴影,调整左下角的阴影-->
                    <Border x:Name="dropDownBorder"  
                              Margin="8,8,-2,-2"
                             CornerRadius="4"
                            Padding="10"
                            Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"
                            BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}"  >
                      
                        <ScrollViewer x:Name="DropDownScrollViewer">
                            <Grid x:Name="grid" RenderOptions.ClearTypeHint="Enabled">
                                <Canvas x:Name="canvas" HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0">
                                    <Rectangle x:Name="opaqueRect" Fill="{Binding Background, ElementName=dropDownBorder}" Height="{Binding ActualHeight, ElementName=dropDownBorder}" Width="{Binding ActualWidth, ElementName=dropDownBorder}"/>
                                </Canvas>
                                <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                            </Grid>
                        </ScrollViewer>
                    </Border>
                </theme:SystemDropShadowChrome>
            </Popup>
<--! 其他代码-->

 

 

标签:控件,效果,SystemDropShadowChrome,阴影,添加,引用
From: https://www.cnblogs.com/Peretsoft/p/18457022

相关文章

  • Stata教程:高级虚拟变量处理和标签添加
    Stata教程:高级虚拟变量处理和标签添加小菲stata,全网同名Hello,大家好,接粉丝提问,这期给大家分享虚拟变量处理和标签添加,在这个教程中,我们将使用Stata的"nlsw88"数据集(这是一个关于1988年美国女性劳动力的数据集)来演示如何创建更复杂的虚拟变量,添加详细的标签,并进行基本的统......
  • laravel11:添加全局中间件
    一,文档地址:https://docs.golaravel.com/docs/middleware注意选择11这个版本二,添加全局中间件时,需要添加到bootstrap/app.php文件中:1,useApp\Http\Middleware\EnsureTokenIsValid;->withMiddleware(function(Middleware$middleware){$middleware->append(Ensure......
  • Qt/C++加载不同的地图控件/地图类型/缩放标尺/缩略图/比例尺/实时路况/全景视图等
    一、前言说明在展示地图的时候,有些常规的操作,比如调整地图的缩放级别,切换到卫星图等,希望能够在地图上直接操作实现,于是就有了一堆地图控件,可以根据自己的需求动态的添加和删除,这样就更直接更快捷,而不是通过函数去设置。几乎每个地图厂家都提供了类似的控件,尽管命名可能有些差别,常......
  • 界面控件Kendo UI for jQuery 2024 Q3亮点 - 支持切换编辑模式
    随着最新的2024Q3版本,Progress使用户能够使用现成的页面模板和构建块更快地构建令人惊叹的应用程序,使您的Telerik和KendoUI开发体验更好。Telerik和KendoUI 2024Q3版本将焦点放在新推出的页面模板和构建块上,每个页面模板和构建块都预先配置了TelerikUIforBlazor、Kend......
  • Gitlab添加SSH密钥
    1、首先本地需要下载git,确保右键有gitbash选项2、在C盘用户文件夹下,找到.ssh目录(没有新建)3、在此目录下打开gitbash4、生成密钥ssh-keygen-trsa-b4096-C"[email protected]"ssh-keygen:这是生成SSH密钥对的命令。-trsa:这个选项指定了密钥类型。rsa是一种常用的加密......
  • C#联合Visionpro编程学习记录(将指定颜色的十字线图形添加到CogRecordDisplay上)
    1///<summary>2///将指定颜色的十字线图形添加到CogRecordDisplay上3///</summary>4///<paramname="icogimage"></param>5///<returns></returns>6publicstaticstringAddCrossCurveRecord2CogRecordDisplay(I......
  • WPF中的ListBox怎么添加删除按钮并删除所在行
    直接上代码:第一步:创建测试类publicclassBeautifulGirl{publicstringName{get;set;}}第二步:创建viewmodel和数据源publicclassMainWindowVm{publicObservableCollection<BeautifulGirl>Girls{get;set;}......
  • 【javascript 编程】Web前端之JavaScript动态添加类名的两种方法、区别、className、c
    通过className来添加或删除类名添加类名获取元素el.className="类名1类名2...";多个类名用空格隔开。移除类名获取元素名el.className="";直接等于一个空字符串即可删除类名。通过classList来添加或删除类名添加一个类名获取元素名el.classList.add("类名");。......
  • springboot 添加@Test(org.junit.Test) 注解后,idea右键菜单,没有运行项
    网上试了很多办法,包括检查idea的junit插件是否已安装,我安装了也用不了清除idea缓存,也不行。 后来将org.junit.Test换成  org.junit.jupiter.api.Test就可以了。maven引入包(注意这里版本换成5.9.3后不行)<dependency><groupId>org.junit.jupiter</groupI......
  • 界面控件Kendo UI for jQuery 2024 Q3亮点 - 支持切换编辑模式
    随着最新的2024Q3版本,Progress使用户能够使用现成的页面模板和构建块更快地构建令人惊叹的应用程序,使您的Telerik和KendoUI开发体验更好。Telerik和KendoUI 2024Q3版本将焦点放在新推出的页面模板和构建块上,每个页面模板和构建块都预先配置了TelerikUIforBlazor、KendoU......