WPF中的滚动条有问题
所以我试着让我的滚动条A只在需要时显示,B只在我的描述文本周围显示 现在,滚动视图从窗口的顶部转到底部WPF中的滚动条有问题,wpf,xaml,Wpf,Xaml,所以我试着让我的滚动条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
<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>
你很接近,问题似乎是布局问题。由于控件在网格中排列,没有行和列定义,因此scrollviewer试图将其大小调整为网格的完整大小,而textblock保持其固定大小和边距。尝试以下起点,看看是否有帮助:
<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>
网格试图让其子节点占用所有可用空间 您的ScrollViewer是其中一个子项,因此默认情况下它将填充所有可用空间 有很多方法可以解决这个问题
- 您可以使用不同的面板类型,即不尝试拉伸子面板以填充所有可用空间的面板类型。根据您使用过大的边距所做的工作,一个
可能是合适的 为了快速了解WPF可用的布局面板,我建议阅读以下内容:画布
- 另一种方法是为网格提供一些行定义,并指定包含ScrollViewer的行的大小应为固定大小,或者应调整大小使其适合子对象所需的任何大小(Height=“Auto”)
- 或者您可以给ScrollViewer一个固定的高度,并将其设置为
属性,使其固定到网格的顶部或底部垂直对齐
就我个人而言,我会推荐第一种选择——审查WPF的布局系统,并为您的布局确定更合适的面板类型。如果最合适的面板类型是网格,那么我强烈建议使用RowDefinitions和ColumnDefinitions为网格提供某种结构,而不是试图使用过大的边距来定位控件。在对您的答案稍加修改和格式化后,我得到了我想要的答案。谢谢^_^