如何在WPF中动态设置WebView2控件的透明度?Storyboard设置无效
WPF WebView2 透明度动态过渡的可行方案
WebView2基于Win32控件封装,直接设置它的Opacity属性往往不生效,下面是几种可行的动态调整透明度的方法:
方法一:通过容器控件的Opacity实现淡入动画
把WebView2放在Grid或Border这类容器里,对容器的Opacity做Storyboard动画,间接实现WebView2的渐显效果:
<!-- XAML部分 --> <Grid x:Name="WebViewContainer" Opacity="0"> <wv2:WebView2 x:Name="MyWebView" Source="https://example.com"/> </Grid> <Storyboard x:Key="FadeInStoryboard"> <DoubleAnimation Storyboard.TargetName="WebViewContainer" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:1"/> </Storyboard>
后台启动动画:
var storyboard = (Storyboard)FindResource("FadeInStoryboard"); storyboard.Begin();
方法二:配置透明背景后直接动画WebView2自身Opacity
先等WebView2的CoreWebView2初始化完成,设置其背景为透明,之后就能正常用自身的Opacity属性做动画:
// 后台代码 await MyWebView.EnsureCoreWebView2Async(); // 设置CoreWebView2背景透明 MyWebView.CoreWebView2.SetBackgroundColor(System.Drawing.Color.Transparent);
对应的XAML动画:
<Storyboard x:Key="WebViewFadeIn"> <DoubleAnimation Storyboard.TargetName="MyWebView" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:1"/> </Storyboard>
方法三:动画背景色Alpha通道+Opacity
如果不需要完全透明的背景,也可以同时动画WebView2背景色的Alpha通道和自身Opacity:
<!-- 先给WebView2设置SolidColorBrush背景 --> <wv2:WebView2 x:Name="MyWebView" Source="https://example.com"> <wv2:WebView2.Background> <SolidColorBrush Color="#FFFFFFFF"/> </wv2:WebView2.Background> </wv2:WebView2> <!-- 动画定义 --> <Storyboard x:Key="FadeInWithBG"> <ColorAnimation Storyboard.TargetName="MyWebView" Storyboard.TargetProperty="(WebView2.Background).(SolidColorBrush.Color)" From="#00FFFFFF" To="#FFFFFFFF" Duration="0:0:1"/> <DoubleAnimation Storyboard.TargetName="MyWebView" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:1"/> </Storyboard>
内容的提问来源于stack exchange,提问作者Laxmi
相关产品推荐
相关产品推荐

