【问题标题】:Stretch content of SplitView.Pane when SplitView is in Compact mode当 SplitView 处于紧凑模式时,拉伸 SplitView.Pane 的内容
【发布时间】:2015-04-17 23:21:46
【问题描述】:

我正在尝试使用 SplitView 控件创建导航栏。我将它的 DisplayMode 属性设置为 CompactInline,并为 CompactPaneLength 和 OpenPaneLength 属性设置了两个不同的值。 问题是当 SplitView 关闭(压缩)时,它的窗格内容不会知道新的大小,所以如果我在其中放置一个让我们说 Border 元素,该元素将不会被拉伸并超出紧凑窗格区域:

 <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <SplitView IsPaneOpen="False" CompactPaneLength="100" OpenPaneLength="200" DisplayMode="CompactInline">
        <SplitView.Pane>
            <Border BorderBrush="Blue" Height="50"
                    BorderThickness="4"
                    VerticalAlignment="Top">
                <FontIcon Glyph="&#xE094;"
                          Width="40"
                          Height="40" />
            </Border>
        </SplitView.Pane>
    </SplitView>
</Grid>

这是一个演示问题的图像:

问题是:如何在不使用事件处理程序和代码的情况下解决问题?

【问题讨论】:

    标签: c# xaml winapp


    【解决方案1】:

    您的 compactPane 宽度设置为 100 像素。由于边框的宽度没有限制,它会拉伸,变成 100 px。边框的内容将居中。

    将 CompactPane 宽度设置为 50,或将边框宽度设置为 50 以解决问题

    【讨论】:

    • 对不起,我提供的图像与 xaml 代码不匹配,我更新了它,忘记了 '50'。问题是边框控件没有拉伸,这很明显,因为我们看不到它的右边缘,并且内容没有居中,此外,我们不能给边框控件一个固定的宽度,因为它必须在窗格打开/关闭时调整大小。
    • SplitView Panel 的特点是它不会调整其内容的大小。它只会隐藏任何溢出的内容。
    • 是的,我希望有一个干净的解决方法来解决这个问题。一个棘手的解决方法是使用绑定和转换器,但是由于转换器需要访问 PaneView 的两个属性(CompactPaneLength 和 OpenPaneLength),并且 winrt 不支持多绑定,所以它变得有点棘手。
    • 我对 SplitView 控件进行了一些检查,但没有一个显示窗格的当前宽度。我打赌你需要在 / MVVM 后面做一些代码,并将宽度与 IsPaneOpen 和 Compact/OpenPaneLength 联系起来。
    猜你喜欢
    • 1970-01-01
    • 2022-01-27
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    相关资源
    最近更新 更多