Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF:当另一个对象增加时自动收缩网格中的对象_C#_.net_Wpf_Windows - Fatal编程技术网

C# WPF:当另一个对象增加时自动收缩网格中的对象

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

我正在为windows构建一个聊天应用程序,主应用程序屏幕是从两个不同的视图构建的。第一个是用于消息的ListBox,另一个是用于文本输入的RichTextBox

RichTextBox具有MaxHeight属性,当用户将allot文本放入框中时,它可以扩展到该属性。但是,当文本框展开并与ListBox视图重叠时,就会出现问题

我不知道当列表框扩展时,如何强制列表框根据文本框的高度进行收缩

例如:

XAML的一部分:

<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代码。