以假乱真解决WebBrowser遮挡SL控件的问题
查找了很多官网文档、资料、论坛,WebBrowser遮挡SL控件的问题一直没能很好的解决。
今天看到WebBrowser 和 WebBrowserBrush 控件 msdn文章,突发奇想,同时使用 WebBrowser 和 WebBrowserBrush来解决WebBrowser遮挡SL控件的问题。其结果恰恰是我们所预想的。
xaml代码:
<UserControl x:Class="SilverlightApplication14.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" > <Grid x:Name="LayoutRoot" Background="White" MouseMove="LayoutRoot_MouseMove"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <ComboBox Grid.Row="0" DropDownOpened="ComboBox_DropDownOpened" DropDownClosed="ComboBox_DropDownClosed" > <ComboBoxItem Content="aaa"/> <ComboBoxItem Content="aaa"/> <ComboBoxItem Content="aaa"/> </ComboBox> <WebBrowser Grid.Row="1" Name="WB1" Source="http://www.google.com.hk" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> <Rectangle x:Name="rect" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Visibility="Collapsed"> <Rectangle.Fill> <WebBrowserBrush SourceName="WB1" Opacity="1" x:Name="WBB1"/> </Rectangle.Fill> </Rectangle> </Grid> </UserControl>
xaml.cs代码:
using System; using System.Windows.Controls; using System.Windows.Input; namespace SilverlightApplication14 { public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); } private void LayoutRoot_MouseMove(object sender, MouseEventArgs e) { WBB1.Redraw(); } private void ComboBox_DropDownOpened(object sender, EventArgs e) { WB1.Visibility = System.Windows.Visibility.Collapsed; rect.Visibility = System.Windows.Visibility.Visible; } private void ComboBox_DropDownClosed(object sender, EventArgs e) { WB1.Visibility = System.Windows.Visibility.Visible; rect.Visibility = System.Windows.Visibility.Collapsed; } } }
截图如下: