纯粹使用xaml实现毛玻璃背景Panel效果

       由于一些原因,在一个wpf的应用里想做个有毛玻璃效果的Panel,放些图片按钮在上面, 然后叠加在一个listbox(内容为图片)上。感觉会还不错。

       在网上找了一段时间,感觉都比较复杂,还得写c#代码。觉得应该只写xaml就够了啊,又找不到资源,干脆自己写算了。

        参考了一些资料,觉得关键在于这个Panel的背景需要参考另一个Panel影像并对它做blur操作。

        参考另一Panel的影像其实就是把自己的背景的Visual binding到那个Panel上。

        找找哪个容器能包含Visual和Effect, 这样就可以做背景了。对了, 使用Border‘!

                <Border.Background>
                    <VisualBrush Stretch="Uniform" Visual="{Binding ElementName=targetPanelName}"/>
                </Border.Background>

                <Border.Effect>
                    <BlurEffect Radius="50"></BlurEffect>
                </Border.Effect>

     做好那个需要毛玻璃背景Panel, 调整好大小,位置, 设置这个Panel的背景为Transprent。

     按照这个Panel的位置,大小,设置Border.Clip

                <Border.Clip>
                    <RectangleGeometry Rect="0,0,200,200"/>
                </Border.Clip>

然后就OK了!嘿,还是挺简单的!

没有需要就没有做Panel拖拽, 但是应该也不难, 在代码里修改这个Border.Clip就好。

资源:https://download.csdn.net/download/bullseye/12404719