我有一个Windows 8.1应用程序使用设置弹出的设置弹出,当您单击“设置”栏中的“自定义”设置时会打开。

然而,我的内容在设置中弹出不使用设置弹出的完整高度/宽度,而是在所有角落中都有均匀的余量。以下图片显示相同的。

为了更好地理解,我已经放了黑色和红色背景。黑色背景是用于Settingfullfultout,红色是弹性内部的StackPanel。我已经将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>
.

正如您可以看到红色未覆盖整个黑色区域。我想创建这样的UI。

现在,如果您在上图的底部注意到。添加帐户按钮涵盖了弹出的整个宽度。

如何实现类似于此类似的UI?

有帮助吗?

解决方案

实际是不是依赖属性,因此绑定可能无法正常工作。“绑定”高度的方式是使用诸如此类的SizeChanged事件处理程序。

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

SetterningFlyout样式具有填充内置。要使用内容的总区,请将Padding属性设置为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>
.

其他提示

settingfullflyout是从ContentControl继承的,因此您需要只需要更改填充完整部分的下一个属性:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top