silverlight – 成长ScrollView(高度=“自动”MaxHeight =“拉伸”)

silverlight – 成长ScrollView(高度=“自动”MaxHeight =“拉伸”),第1张

概述我想要的是: 我想在我的Silverlight 4应用程序中有一个ScrollView,它与内容一起在Height中增长,但如果它会比它的容器更高,它会显示一个滚动条. 解决方案我发现: 我找到了很多问题,其中解决方案是拉伸Scrollviewer,但这不是我想要的. Scrollviewer应该尽可能小. 我的问题: 为了使滚动查看器顶部更加困难,找到一个标题,它是一个具有静态高度的堆栈面板. 我想要的是:
我想在我的Silverlight 4应用程序中有一个ScrollVIEw,它与内容一起在Height中增长,但如果它会比它的容器更高,它会显示一个滚动条.

解决方案我发现:
我找到了很多问题,其中解决方案是拉伸ScrollvIEwer,但这不是我想要的. ScrollvIEwer应该尽可能小.

我的问题:
为了使滚动查看器顶部更加困难,找到一个标题,它是一个具有静态高度的堆栈面板.

解决方案Approch 1:
我首先尝试使用普通的XAML,但我无法弄清楚它应该如何工作.

<GrID Height="auto" x:name="myGrID" >    <GrID.RowDeFinitions>        <RowDeFinition Height="100"/>        <RowDeFinition Height="auto" />    </GrID.RowDeFinitions>    <StackPanel GrID.Row="0" Background="AliceBlue">        <!-- Dummy header-->    </StackPanel>    <ScrollVIEwer GrID.Row="1" Height="auto">        <button WIDth="100"  Height="50" Click="button_Click" />        <!-- onClick the button will switch between height="600" and height="50"             Code:            private voID button_Click(object sender,RoutedEventArgs e)            {                if (sender is button)                {                    button btn = (button)sender;                    btn.Height = (btn.Height == 50) ? 600 : 50 ;                }            }        -->    </ScrollVIEwer></GrID>

如果你点击按钮它会变得更高,ScrollvIEwer会因为它很高而被剪切.任何sugestions?

解决方案方法2:
然后我尝试使用包含容器的actualHeight设置ScrollVIEwer的* max *高度,因此我在ScrollVIEwer周围插入了一个StackPanel.这在VS2010 XAML设计器中有效,但在代码执行时无效.我不知道为什么…

<GrID Height="auto" x:name="myGrID" >    <GrID.RowDeFinitions>        <RowDeFinition Height="100"/>        <RowDeFinition Height="*" />    </GrID.RowDeFinitions>    <StackPanel GrID.Row="0" Background="AliceBlue">        <!-- Dummy header-->    </StackPanel>    <StackPanel GrID.Row="1" x:name="myStackPanel" Height="auto" VerticalAlignment="Stretch">        <ScrollVIEwer Height="auto" MaxHeight="{Binding Elementname=myStackPanel,Path=ActualHeight}">            <button WIDth="100"  Height="50" Click="button_Click" />            <!-- onClick the button will switch between height="600" and height="50"                 Code:                private voID button_Click(object sender,RoutedEventArgs e)                {                    if (sender is button)                    {                        button btn = (button)sender;                        btn.Height = (btn.Height == 50) ? 600 : 50 ;                    }                }            -->        </ScrollVIEwer>    </StackPanel></GrID>

提前致谢!

解决方法 解决方案是正确使用VerticalAlignment.您希望包含scrollvIEw的GrID行是剩余空间的大小.您不希望ScrollvIEwer最初占用所有空间,但需要将其限制在该空间内. Stretch的默认VerticalAlignment将占用所有可用大小.使用top代替它将使它只能达到它需要的高度,直到GrID将其大小限制为可用空间.

<GrID x:name="myGrID" >    <GrID.RowDeFinitions>        <RowDeFinition Height="100"/>        <RowDeFinition Height="*" />    </GrID.RowDeFinitions>    <StackPanel GrID.Row="0" Background="AliceBlue">        <!-- Dummy header-->    </StackPanel>    <ScrollVIEwer GrID.Row="1" VerticalAlignment="top" VerticalScrollbarVisibility="auto">    </ScrollVIEwer></GrID>

但请注意VerticalScrollbarVisibility,尽管文本中有迹象表明它不应包含在您自己的xaml中.也许实际上这就是你一直以来的真实情况.使用该位置删除VerticalAlignment.根据您的场景的其余部分,您可能会发现实际上滚动查看器的完整范围的轮廓边框更有意义.

总结

以上是内存溢出为你收集整理的silverlight – 成长ScrollView(高度=“自动”MaxHeight =“拉伸”)全部内容,希望文章能够帮你解决silverlight – 成长ScrollView(高度=“自动”MaxHeight =“拉伸”)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1002801.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存