Браузер WPF там, но невидимый

Я пытаюсь использовать управление Браузером в очень простом приложении WPF, и кажется, что, в то время как браузер загружает страницу, которую я запросил (я могу изображения наведения мыши и видеть теги ALT), я не могу на самом деле видеть ничто больше: alt text

Вот 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.

Спасибо.

15
задан Community 8 February 2017 в 14:26
поделиться

4 ответа

Просто быстрый ответ, к сожалению, уже поздно...

Вам нужно установить AllowsTransparency="False" :)

18
ответ дан 1 December 2019 в 02:37
поделиться

WPF WebBrowser не работает с AllowsTransparency="True".

5
ответ дан 1 December 2019 в 02:37
поделиться

Устанавливаете ли вы свойство 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 для достижения желаемого.
  • Большинство элементов управления по умолчанию имеют прозрачный фон, поэтому вам не нужно указывать это в XAML.
  • Я предпочитаю 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 не соответствует тому, что видно на изображении. Возможно, значения, приходящие из этих стилей, портят ваш элемент управления.

1
ответ дан 1 December 2019 в 02:37
поделиться

Я только что нашел решение в этом блоге . По сути, он просто показывает другое окно поверх того места, где должен быть WebControl ... оно немного грязное, но работает очень хорошо :)

2
ответ дан 1 December 2019 в 02:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: