我正在为 Windows 构建一个聊天应用程序,主应用程序屏幕是从两个不同的视图构建的。第一个是用于消息的 ListBox,另一个是用于文本输入的 RichTextBox。
RichTextBox 具有 MaxHeight 属性,当用户将分配的文本放入框中时,它可以扩展到它。但是当文本框被展开并且它与 ListBox 视图重叠时会出现问题。
我不知道如何强制 ListBox 在展开时相应地缩小到 TextBox 的高度
例子:
<Grid Margin="0,55,0,5" HorizontalAlignment="Stretch" >
<ListBox
global:ListBoxEx.AutoScrollToEnd="True"
ScrollViewer.ScrollChanged="Scroll_ScrollChanged"
VirtualizingStackPanel.IsVirtualizing="True"
BorderThickness="0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
IsSynchronizedWithCurrentItem="True" Margin="0,0,0,61"
Padding="5,0,5,0" x:Name="Scroll"
HorizontalAlignment="Stretch">
</ListBox>
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Background="White">
<Grid Margin="20,0,20,0">
<Border BorderThickness="0 2 0 0" Padding="0,0,0,5" >
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Height="40" FontSize="30" Margin="0" HorizontalAlignment="Right" VerticalAlignment="Bottom" Width="40"/>
<StackPanel Grid.Column="1" Orientation="Vertical" VerticalAlignment="Center" >
<TextBlock Margin="5,0,5,0" HorizontalAlignment="Left" />
<Border MinHeight="35" MaxHeight="200" Background="White" BorderThickness="20" BorderBrush="Black" >
<DockPanel LastChildFill="True" IsItemsHost="False">
<Grid>
<toolkit:RichTextBox VerticalScrollBarVisibility="Auto" FontSize="14" HorizontalAlignment="Stretch" VerticalAlignment="Center" VerticalContentAlignment="Center" BorderThickness="0" Margin="0,0,33,0">
<toolkit:RichTextBox.TextFormatter>
<local:InputFormatter />
</toolkit:RichTextBox.TextFormatter>
</toolkit:RichTextBox>
<Grid HorizontalAlignment="Right" Background="Transparent" Height="40" Width="40" VerticalAlignment="Bottom">
<Button FontSize="20" />
</Grid>
</Grid>
</DockPanel>
</Border>
</StackPanel>
<Button Grid.Column="2" Height="40" Width="40" Margin="0" HorizontalAlignment="Left" VerticalAlignment="Bottom" />
</Grid>
</Border>
</Grid>
</Grid>
</Grid>
</Grid>
您应该尝试使用RowDefinition
网格的 。Height="*"
意味着它将填充剩余的空间,而不管其内容。Height="Auto"
意味着它将根据其内容进行扩展。
这是一个简单的示例,您可以根据自己的代码进行调整:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ListBox ScrollViewer.VerticalScrollBarVisibility="Auto">
<ListBoxItem>ListBox Item #1</ListBoxItem>
<ListBoxItem>ListBox Item #2</ListBoxItem>
<ListBoxItem>ListBox Item #3</ListBoxItem>
<ListBoxItem>ListBox Item #1</ListBoxItem>
<ListBoxItem>ListBox Item #2</ListBoxItem>
<ListBoxItem>ListBox Item #3</ListBoxItem>
<ListBoxItem>ListBox Item #1</ListBoxItem>
<ListBoxItem>ListBox Item #2</ListBoxItem>
<ListBoxItem>ListBox Item #3</ListBoxItem>
<ListBoxItem>ListBox Item #1</ListBoxItem>
<ListBoxItem>ListBox Item #2</ListBoxItem>
<ListBoxItem>ListBox Item #3</ListBoxItem>
<ListBoxItem>ListBox Item #1</ListBoxItem>
<ListBoxItem>ListBox Item #2</ListBoxItem>
<ListBoxItem>ListBox Item #3</ListBoxItem>
</ListBox>
<RichTextBox Grid.Row="1">
<FlowDocument>
<Paragraph FontSize="24">aaa</Paragraph>
</FlowDocument>
</RichTextBox>
</Grid>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句