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

安吉·摩尔

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

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

我不知道如何强制 ListBox 在展开时相应地缩小到 TextBox 的高度

例子:

在此处输入图片说明 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>         
曼特

您应该尝试使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

网格视图重叠在 wpf 中的另一个网格视图上

ThreeJS:在另一个网格中时,网格变得不可见

在Django模型中创建或更新另一个表的对象时自动创建模型对象

WPF:如何在单击按钮时淡入网格,并在单击另一个按钮时淡出网格?

设置为等于另一个对象时是否为自动释放对象

当给另一个输入文本另一个值时,自动在输入文本中插入值

WPF UserControl:单击 UserControl 对象时打开另一个 UserControl(弹出窗口)

如何随着另一个div的高度增加自动增加div的高度?

当增加另一个变量值时,文件中变量的值会反增加

WPF MVVM:根据另一个数据网格的选定项更新数据网格

如何使用并发类在Java中自动减少一个字段并自动增加另一个字段

当您在javascript中声明对象时,如何设置与另一个对象相关的属性

将对象推入mongodb中的另一个对象时出错

在另一个组合框中插入数字时自动生成组合框

当另一个表获得新记录时,在表中自动创建记录

自动热键。按住两个按钮并轻按另一个以增加音量

在绘制另一个对象时将一个绘制的对象保留在JPanel中(Java)

在 JavaScript 中通过另一个对象引用一个对象时未定义

为什么从另一个类调用使用自动装配对象的方法时,该对象为null?

在另一个对象中创建的模拟对象

导入另一个对象中包含的对象

在另一个对象中动态创建对象

检索另一个对象中的JSON对象

自动绑定WebAPI中的另一个参数

自动在另一个表中递增?

如何通过单击Angular为另一个对象的对象增加价值

在另一个视图中滚动时“缩小” CardView

使用另一个按钮设置内联块时,引导输入字段会缩小

是否可以根据Visual Studio 2013数据库中的另一个ID自动增加一个ID并将其重置为1?