内容对话框不滚动

Mar*_*ter 5 xaml uwp

在 UWP 中,ContentDialog仅将大小调整到特定大小,然后内容将被剪切 - 而不是滚动。如果我ScrollViewer在内容中包含 a ,它只会随着其内容无限期地增长并且永远不会滚动。

Mar*_*ter 5

由于我在其他地方找不到解决方案,这里是我的:

https://msdn.microsoft.com/en-us/library/windows/apps/mt299120.aspx复制 的默认样式ContentDialog并更改 的ScrollViewer属性:

            <ScrollViewer x:Name="ContentScrollViewer"
                    HorizontalScrollBarVisibility="Disabled"
                    VerticalScrollBarVisibility="Disabled"
Run Code Online (Sandbox Code Playgroud)

            <ScrollViewer x:Name="ContentScrollViewer"
                    HorizontalScrollBarVisibility="Auto"
                    VerticalScrollBarVisibility="Auto"
Run Code Online (Sandbox Code Playgroud)

听起来很简单,但我花了太多时间调试可视化树来解决这个问题......

ContentDialog这是您想要滚动的完整样式:

        <!-- Default style for Windows.UI.Xaml.Controls.ContentDialog -->
        <Style TargetType="ContentDialog" x:Key="ScrollableContentDialogStyle">
            <Setter Property="Foreground" Value="{ThemeResource SystemControlPageTextBaseHighBrush}" />
            <Setter Property="Background" Value="{ThemeResource SystemControlBackgroundChromeMediumLowBrush}" />
            <Setter Property="HorizontalAlignment" Value="Center" />
            <Setter Property="VerticalAlignment" Value="Top" />
            <Setter Property="IsTabStop" Value="False" />
            <Setter Property="MaxHeight" Value="{ThemeResource ContentDialogMaxHeight}" />
            <Setter Property="MinHeight" Value="{ThemeResource ContentDialogMinHeight}" />
            <Setter Property="MaxWidth" Value="{ThemeResource ContentDialogMaxWidth}" />
            <Setter Property="MinWidth" Value="{ThemeResource ContentDialogMinWidth}" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ContentDialog">
                        <Border x:Name="Container">
                            <Grid x:Name="LayoutRoot">
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="Auto" />
                                </Grid.RowDefinitions>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto" />
                                </Grid.ColumnDefinitions>
                                <Border x:Name="BackgroundElement"
                                        Background="{TemplateBinding Background}"
                                        FlowDirection="{TemplateBinding FlowDirection}"
                                        BorderThickness="{ThemeResource ContentDialogBorderWidth}"
                                        BorderBrush="{ThemeResource SystemControlForegroundAccentBrush}"
                                        MaxWidth="{TemplateBinding MaxWidth}"
                                        MaxHeight="{TemplateBinding MaxHeight}"
                                        MinWidth="{TemplateBinding MinWidth}"
                                        MinHeight="{TemplateBinding MinHeight}" >
                                    <Grid x:Name="DialogSpace" VerticalAlignment="Stretch">
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="Auto" />
                                            <RowDefinition Height="*" />
                                            <RowDefinition Height="Auto" />
                                        </Grid.RowDefinitions>
                                        <ScrollViewer x:Name="ContentScrollViewer"
                                                      HorizontalScrollBarVisibility="Auto"
                                                      VerticalScrollBarVisibility="Auto"
                                                      ZoomMode="Disabled"
                                                      Margin="{ThemeResource ContentDialogContentScrollViewerMargin}"
                                                      IsTabStop="False">
                                            <Grid>
                                                <Grid.RowDefinitions>
                                                    <RowDefinition Height="Auto" />
                                                    <RowDefinition Height="Auto" />
                                                </Grid.RowDefinitions>
                                                <ContentControl x:Name="Title"
                                                                Margin="{ThemeResource ContentDialogTitleMargin}"
                                                                Content="{TemplateBinding Title}"
                                                                ContentTemplate="{TemplateBinding TitleTemplate}"
                                                                FontSize="20"
                                                                FontFamily="Segoe UI"
                                                                FontWeight="Normal"
                                                                Foreground="{TemplateBinding Foreground}"
                                                                HorizontalAlignment="Left"
                                                                VerticalAlignment="Top"
                                                                IsTabStop="False"
                                                                MaxHeight="{ThemeResource ContentDialogTitleMaxHeight}" >
                                                    <ContentControl.Template>
                                                        <ControlTemplate TargetType="ContentControl">
                                                            <ContentPresenter
                                                                Content="{TemplateBinding Content}"
                                                                MaxLines="2"
                                                                TextWrapping="Wrap"
                                                                ContentTemplate="{TemplateBinding ContentTemplate}"
                                                                Margin="{TemplateBinding Padding}"
                                                                ContentTransitions="{TemplateBinding ContentTransitions}"
                                                                HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                                                VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
                                                        </ControlTemplate>
                                                    </ContentControl.Template>
                                                </ContentControl>
                                                <ContentPresenter x:Name="Content"
                                                                  ContentTemplate="{TemplateBinding ContentTemplate}"
                                                                  Content="{TemplateBinding Content}"
                                                                  FontSize="{ThemeResource ControlContentThemeFontSize}"
                                                                  FontFamily="{ThemeResource ContentControlThemeFontFamily}"
                                                                  Margin="{ThemeResource ContentDialogContentMargin}"
                                                                  Foreground="{TemplateBinding Foreground}"
                                                                  Grid.Row="1"
                                                                  TextWrapping="Wrap" />
                                            </Grid>
                                        </ScrollViewer>
                                        <Grid x:Name="CommandSpace" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Bottom">
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition/>
                                                <ColumnDefinition/>
                                            </Grid.ColumnDefinitions>
                                            <Border x:Name="Button1Host"
                                                    Margin="{ThemeResource ContentDialogButton1HostMargin}"
                                                    MinWidth="{ThemeResource ContentDialogButtonMinWidth}"
                                                    MaxWidth="{ThemeResource ContentDialogButtonMaxWidth}"
                                                    Height="{ThemeResource ContentDialogButtonHeight}"
                                                    HorizontalAlignment="Stretch" />
                                            <Border x:Name="Button2Host"
                                                    Margin="{ThemeResource ContentDialogButton2HostMargin}"
                                                    MinWidth="{ThemeResource ContentDialogButtonMinWidth}"
                                                    MaxWidth="{ThemeResource ContentDialogButtonMaxWidth}"
                                                    Height="{ThemeResource ContentDialogButtonHeight}"
                                                    Grid.Column="1"
                                                    HorizontalAlignment="Stretch" />
                                        </Grid>
                                    </Grid>
                                </Border>
                            </Grid>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
Run Code Online (Sandbox Code Playgroud)