Я пытаюсь использовать управление Браузером в очень простом приложении WPF, и кажется, что, в то время как браузер загружает страницу, которую я запросил (я могу изображения наведения мыши и видеть теги ALT), я не могу на самом деле видеть ничто больше:
Вот XAML для приложения:
<Window x:Class="SmokeyBox2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="SmokeyBox" Height="120" Width="510" ShowInTaskbar="False"
SizeToContent="WidthAndHeight" WindowStyle="None" AllowsTransparency="True"
MouseLeftButtonDown="Window_MouseLeftButtonDown">
<Border Background="#50FFFFFF" CornerRadius="5" BorderThickness="2,0,2,2"
Padding="5 1 5 5">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Background="Transparent" Content="SmokeyBox"
MouseLeftButtonDown="Label_MouseLeftButtonDown" />
<TextBox Grid.Row="1" Grid.Column="0" Name="searchText" Width="450" FontFamily="Arial" Foreground="DarkGray"
Background="Transparent" FontSize="20" MouseLeftButtonDown="searchText_MouseLeftButtonDown"
BorderBrush="Transparent" />
<Expander Grid.Row="1" Grid.Column="1" Padding="2 3 0 0 " Expanded="Expander_Expanded"
Collapsed="Expander_Collapsed" />
<WebBrowser Grid.Row="2" Grid.Column="0" x:Name="browser" Visibility="Visible"
Width="480" Height="480" Margin="2 2 2 2" ></WebBrowser>
</Grid>
</Border>
</Window>
Таким образом, кто-либо может помочь мне выяснить, почему браузер не показывает домашнюю страницу Yahoo! как, я спросил это к? И в то время как я в нем, я собираюсь честно признаться в том, что это - мое первое приложение WPF, и я хотел бы услышать любые общие указатели о том, как избавиться от общей noobie вредности в моем XAML.
Спасибо.
Просто быстрый ответ, к сожалению, уже поздно...
Вам нужно установить AllowsTransparency="False" :)
WPF WebBrowser не работает с AllowsTransparency="True".
Устанавливаете ли вы свойство WebBrowser.Source
? Я попробовал следующий XAML в Kaxaml, и он работал нормально:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Border>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="SmokeyBox" />
<TextBox Grid.Row="1" Grid.Column="0" Name="searchText" FontFamily="Arial" Foreground="DarkGray"
Background="Transparent" FontSize="20" BorderBrush="Transparent" />
<Expander Grid.Row="1" Grid.Column="1" Padding="2 3 0 0" />
<WebBrowser Source="http://www.yahoo.com" Grid.Row="2" Grid.Column="0" x:Name="browser" Visibility="Visible"
Margin="2 2 2 2" />
</Grid>
</Border>
</Page>
Что касается общих советов новичкам по XAML:
Height
и Width
и вместо этого изучите, как работают элементы управления компоновкой (DockPanel, StackPanel, Grid и т.д.). Если вы действительно хотите принудительно установить размер чего-либо, подумайте, не лучше ли использовать MinWidth
и MinHeight
для достижения желаемого. TextBlock
, а не Label
для текстовых элементов на экране. Ваш пробег может варьироваться, но большинство примеров используют TextBlock
, по моему опыту. EDIT
Я собрал для вас альтернативный макет, который избегает использования Grid
:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Border>
<DockPanel>
<TextBlock DockPanel.Dock="Top" Text="SmokeyBox" />
<DockPanel DockPanel.Dock="Top">
<Expander DockPanel.Dock="Right" Padding="2 3 0 0" />
<TextBox Name="searchText" FontFamily="Arial" FontSize="20" />
</DockPanel>
<WebBrowser Source="http://www.yahoo.com" x:Name="browser" Margin="2 2 2 2" />
</DockPanel>
</Border>
</Page>
Вы можете захотеть пройтись и обновить поля, чтобы он выглядел так, как вы хотите.
Кроме того, из вашего скриншота ясно, что здесь играют роль дополнительные стили/шаблоны, поскольку XAML не соответствует тому, что видно на изображении. Возможно, значения, приходящие из этих стилей, портят ваш элемент управления.
Я только что нашел решение в этом блоге . По сути, он просто показывает другое окно поверх того места, где должен быть WebControl ... оно немного грязное, но работает очень хорошо :)