#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
выравнивание по горизонтали специально, и это должно заполнить доступное пространство и быть визуально сбалансированным.