Странное поведение веб-браузера с полями

#layout #windows-phone-7 #webbrowser-control #margin

#макет #windows-phone-7 #веб-браузер-контроль #поля

Вопрос:

Я разрабатываю приложение для Windows Phone.

У меня есть пользовательский элемент управления со следующим кодом XAML:

 <UserControl x:Class="XXXXXXX.Views.SignIn.FacebookControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    d:DesignHeight="768" d:DesignWidth="480">

    <Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}">
        <!--ContentPanel. Colocar aquí el contenido adicional-->
        <Grid x:Name="ContentPanel" Margin="12,0,12,0">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <TextBlock
                Grid.Row="1" 
                Height="30" 
                HorizontalAlignment="Left"
                VerticalAlignment="Top"
                Visibility="Visible" 
                Margin="10"
                Name="LoadingText"
                Text="{Binding Path=AppResources.BrowserNavigating, Source={StaticResource LocalizedStrings}}"/>
            <phone:WebBrowser
                Grid.Row="0"
                Name="FacebookLoginBrowser"
                IsScriptEnabled="True"
                Height="607"
                VerticalAlignment="Top"
                HorizontalAlignment="Stretch"
                Margin="0,10"
                Navigated="FacebookLoginBrowser_Navigated"
                Loaded="FacebookLoginBrowser_Loaded"
                Navigating="FacebookLoginBrowser_Navigating"/>
        </Grid>

    </Grid>
</UserControl>
  

Я понимаю это:

ошибка веб-браузера с полями

WebBrowser имеет левое поле, большее, чем его правое поле.

Обновить

И вот как я встраиваю свой пользовательский элемент управления:

 facebookControl = new FacebookControl();
facebookControl.SetValue(Grid.RowSpanProperty, 2);
facebookControl.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
facebookControl.VerticalAlignment = System.Windows.VerticalAlignment.Top;
facebookControl.Margin = new Thickness(0);
facebookControl.Height = 768;
facebookControl.Width = 480;
ContentPanel.Children.Add(facebookControl);
  

И это определение для ContentPanel:

 <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
...
  

Как я могу это исправить?

Комментарии:

1. Ваша строка Margin="0,10" может иметь к этому какое-то отношение. Вы пробовали устанавливать для него одно число, чтобы все поля были одинаковыми?

2. @johnhforrest: Я изменил значение на 0 и получаю ту же проблему.

Ответ №1:

Ваша ContentPanel сетка имеет поля (размером 12 пикселей) с обеих сторон, но правое поле не так очевидно из-за отображаемых счетчиков производительности. В этом проблема?

Комментарии:

1. Завершите работу приложения в VS2010, затем запустите его вручную на эмуляторе (аналогично тому, как вы запускаете приложение на своем телефоне). Я думаю, что есть способ сделать это программно, чтобы вы не потеряли отладочную информацию, но это быстрый и грязный способ сделать это.

2. Я изменил свой вопрос, добавив новую фотографию без счетчиков производительности. Я получаю ту же проблему.

Ответ №2:

Поля не сбалансированы, потому что вы явно задаете ширину. На не устанавливайте Ширину или facebookControl выравнивание по горизонтали специально, и это должно заполнить доступное пространство и быть визуально сбалансированным.