Вопрос

У меня есть приложение Windows 8.1 с помощью параметров вспышки, которые откроются при нажатии на пользовательскую настройку в строке настроек.

Однако мой контент внутри параметров вспышки не использует полную высоту / ширину вспышки настроек вместо этого имеет однородное поле на всех углах. Следующая картина отображается то же самое.

Введите описание изображения здесь

Для лучшего понимания у меня положил черные и красные фоны. Черная предпосылка предназначена для settingsflyout, красный для стекпана внутри вспышки. Я установил высоту и ширину StackPanel до фактического последствий и фактической продвижения от вспышки Вот XAML

<SettingsFlyout
x:Name="AccountsSettingsFlyoutElement"
x:Class="Something.AccountsSettingsFlyout"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Background="Black"
mc:Ignorable="d"
IconSource="Assets/SmallLogo.png"
Title="Accounts"
d:DesignWidth="346">

<!-- This StackPanel acts as a root panel for vertical layout of the content sections -->
<StackPanel Background="Red"
            Width="{Binding ElementName=AccountsSettingsFlyoutElement, Path=ActualWidth}"
            Height="{Binding ElementName=AccountsSettingsFlyoutElement, Path=ActualHeight}">
    <StackPanel Style="{StaticResource SettingsFlyoutSectionStyle}">
        <TextBlock Text="Accounts"
                   x:Uid="AccountsSettings_Title"
                   VerticalAlignment="Bottom"
                   Style="{StaticResource SettingTitleStyle}" />

    </StackPanel>
</StackPanel>
.

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

Введите описание изображения здесь

Теперь, если вы заметите в нижней части вышеуказанной фигуры. Кнопка Добавить учетную запись охватывает всю ширину вспышки.

Как мне добиться пользовательского интерфейса, похожее на это?

Это было полезно?

Решение

ActualHeight не является свойством зависимости, поэтому связывание, вероятно, не работает.Способ «связываться» высотой состоит в том, чтобы использовать обработчик мероприятия SizeChanged, например.

    private void ScrollViewer_OnSizeChanged(object sender, SizeChangedEventArgs e)
    {
        YourGrid.Width = e.NewSize.Width;
        YourGrid.Height = e.NewSize.Height;
    }
.

Стиль settingsflyout имеет встроенный прокладки.Чтобы использовать общую площадь для вашего контента, установите свойство заполнения на 0.

<SettingsFlyout x:Class="ApplicationSettings.SettingsFlyout1"
            Padding="0" ...
.

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

<ScrollViewer x:Name="ScrollViewer"
                AutomationProperties.AccessibilityView="Raw"
                HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}"
                HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"
                Grid.Row="1"
                SizeChanged="ScrollViewer_OnSizeChanged"
                VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}"
                VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}"
                ZoomMode="{TemplateBinding ScrollViewer.ZoomMode}">
    <ContentPresenter x:Name="ContentPresenter"
                        ContentTemplate="{TemplateBinding ContentTemplate}"
                        ContentTransitions="{Binding TemplateSettings.ContentTransitions, RelativeSource={RelativeSource Mode=TemplatedParent}}"
                        Content="{TemplateBinding Content}"
                        Margin="{TemplateBinding Padding}"
                        HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                        VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
</ScrollViewer>
.

Полноразмерные настройки My Tyleout

Другие советы

settingsflyout унаследован от contentcontrol, поэтому вам нужно изменить только следующие свойства для заполнения полного раздела:

<SettingsFlyout .....
                HorizontalContentAlignment="Stretch" 
                VerticalContentAlignment="Stretch" 
                Padding="0">
    <Grid Background="blue" 
          HorizontalAlignment="Stretch" 
          VerticalAlignment="Stretch">
        ....
    </Grid>
</SettingsFlyout>
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top