Я теряю терпение из-за этого. Я работаю над приложением Windows Phone 7 и не могу понять, какой диспетчер макетов использовать для достижения следующих целей:
По сути, когда я использую Grid в качестве корня макета, я не могу растянуть сетку до размера страницы приложения телефона. Когда основная область контента заполнена, все хорошо, и кнопка сидит там, где я хочу, чтобы она сидела. Однако в случае, если содержимое страницы очень короткое, сетка настолько широка, чтобы вместить его содержимое, и тогда кнопка (которую я отчаянно хочу держать возле правого края экрана) отходит от правого края.
Если я заменю сетку и использую вертикально ориентированную панель стека для корня макета, кнопка будет расположена там, где я хочу, но тогда область контента сможет вырасти за нижний край. Поэтому, когда я помещаю список, полный элементов, в основную область содержимого, он не регулирует свою высоту, чтобы он был полностью виден, но большинство элементов в этом списке просто отображаются ниже нижнего края области отображения.
Я попытался использовать сторонний менеджер макета DockPanel, а затем закрепил кнопку в ее верхнем разделе и установил HorizontalAlignment="Right"
кнопки, но результат был таким же, как с сеткой, он также уменьшается в размере, когда нет ' • недостаточно содержимого в области содержимого (или если заголовок короткий).
Как мне тогда это сделать?
== EDIT ==
Я попробовал XAML в WPCoder, только я заменил пустое текстовое поле на то, что было бы на реальной странице (стековая панель), и поместил список в сетку ContentPanel. Я заметил, что то, что у меня было раньше и что предлагает WPCoder, очень похоже. Вот мой текущий XAML, и страница все еще не увеличивается в соответствии с шириной страницы, и я получаю результаты, идентичные тем, что были раньше:
<phone:PhoneApplicationPage
x:Name="categoriesPage"
x:Class="CatalogueBrowser.CategoriesPage"
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:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="PortraitOrLandscape" Orientation="Portrait"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
xmlns:ctrls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
shell:SystemTray.IsVisible="True">
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" >
<TextBlock Text="Browsing:"
Margin="10,10"
Style="{StaticResource PhoneTextTitle3Style}" />
<TextBlock x:Name="ListTitle"
Text="{Binding DisplayName}"
Margin="0,10"
Style="{StaticResource PhoneTextTitle3Style}" />
</StackPanel>
<Button Grid.Column="1"
x:Name="btnRefineSearch"
Content="Refine Search"
Style="{StaticResource buttonBarStyle}"
FontSize="14" />
</Grid>
<Grid x:Name="ContentPanel" Grid.Row="1">
<ListBox x:Name="CategoryList"
ItemsSource="{Binding Categories}"
Style="{StaticResource CatalogueList}"
SelectionChanged="CategoryList_SelectionChanged"/>
</Grid>
</Grid>
</phone:PhoneApplicationPage>
Вот как выглядит страница с вышеуказанной разметкой XAML в эмуляторе: