所以我试图让我的滚动条到A只显示需要,B只出现在我的描述文字
现在滚动视图从窗口顶部到底部
<Window x:Class="WpfApplication3.DataWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="DataWindow" Height="300" Width="300">
<Grid>
<Label x:Name="lblTitle" Content="Label" HorizontalAlignment="Left" Margin="96,25,0,0" VerticalAlignment="Top" Width="186"/>
<Label x:Name="lblPublishDate" Content="Label" HorizontalAlignment="Left" Margin="96,53,0,0" VerticalAlignment="Top" Width="186"/>
<Image x:Name="imgPic" HorizontalAlignment="Left" Height="81" Margin="10,10,0,0" VerticalAlignment="Top" Width="81"/>
<ScrollViewer>
<TextBlock x:Name="tbDesc" HorizontalAlignment="Left" Margin="10,96,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Height="167" Width="272" Text="TextBlock" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto" />
</ScrollViewer>
</Grid>
答案 0 :(得分:1)
网格试图让它的孩子占用所有可用空间。
您的ScrollViewer是其中一个子项,因此默认情况下它将填充所有可用空间。
有很多方法可以解决这个问题。
您可以使用不同的面板类型,不会尝试拉伸它的孩子来填充所有可用空间。根据您在利润率过高时所做的事情,Canvas
可能是合适的。
我建议您阅读本文,以便快速了解WPF的可用布局面板:WPF Layouts - A Visual Quick Start
另一种方法是给你的网格一些行定义,并指定包含ScrollViewer的行应该是固定大小,或者应该调整大小以使其适合子对象想要的任何大小(高度=&# 34;自动&#34)
或者您可以将ScrollViewer设置为固定高度,并设置它的VerticalAlignment
属性,使其停靠在网格的顶部或底部。
就个人而言,我会推荐第一个选项 - 检查WPF的布局系统,并为您的布局确定更适合的面板类型。如果最合适的面板类型是一个网格,那么我强烈建议使用RowDefinitions和ColumnDefinitions为Grid提供一些结构,而不是尝试使用过大的边距来定位控件。
答案 1 :(得分:0)
你非常接近,问题似乎是布局问题。由于控件在网格中排列而没有行和列定义,因此当文本块遵循其固定大小和边距时,scrollviewer会尝试调整大小到网格的完整大小。尝试以下起点,看看是否有帮助:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="150"/>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0">
<Label x:Name="lblTitle" Content="Label" HorizontalAlignment="Left" Width="186"/>
<Label x:Name="lblPublishDate" Content="Label" HorizontalAlignment="Left" Width="186"/>
<Image x:Name="imgPic" HorizontalAlignment="Left" Height="81" Width="81"/>
</StackPanel>
<ScrollViewer Grid.Row="1" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<TextBlock x:Name="tbDesc" HorizontalAlignment="Left" TextWrapping="Wrap" Text="TextBlock"/>
</ScrollViewer>
</Grid>