查找了很多官网文档、资料、论坛,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;
}
}
}
截图如下:

本文介绍了一种在Silverlight应用中解决WebBrowser控件遮挡其他SL控件的方法,通过结合使用WebBrowser和WebBrowserBrush控件实现。
671

被折叠的 条评论
为什么被折叠?



