C# WPF:当另一个对象增加时自动收缩网格中的对象
我正在为windows构建一个聊天应用程序,主应用程序屏幕是从两个不同的视图构建的。第一个是用于消息的ListBox,另一个是用于文本输入的RichTextBox RichTextBox具有MaxHeight属性,当用户将allot文本放入框中时,它可以扩展到该属性。但是,当文本框展开并与ListBox视图重叠时,就会出现问题 我不知道当列表框扩展时,如何强制列表框根据文本框的高度进行收缩 例如: XAML的一部分:C# WPF:当另一个对象增加时自动收缩网格中的对象,c#,.net,wpf,windows,C#,.net,Wpf,Windows,我正在为windows构建一个聊天应用程序,主应用程序屏幕是从两个不同的视图构建的。第一个是用于消息的ListBox,另一个是用于文本输入的RichTextBox RichTextBox具有MaxHeight属性,当用户将allot文本放入框中时,它可以扩展到该属性。但是,当文本框展开并与ListBox视图重叠时,就会出现问题 我不知道当列表框扩展时,如何强制列表框根据文本框的高度进行收缩 例如: XAML的一部分: <Grid Margin="0,55,0,5" HorizontalA
<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>
您应该尝试使用网格的
行定义。
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>
列表框项目#1
列表框项目#2
列表框项目#3
列表框项目#1
列表框项目#2
列表框项目#3
列表框项目#1
列表框项目#2
列表框项目#3
列表框项目#1
列表框项目#2
列表框项目#3
列表框项目#1
列表框项目#2
列表框项目#3
aaa
请发布您的XAML(或显示列表框和文本框的缩略部分)以提供更多的上下文,好吗?请发布您的XAML代码和截图。我添加了功能示例和一些XAML代码。