当内容溢出窗口时,如何在扩展器中显示滚动条

时间:2013-06-07 07:44:49

标签: wpf xaml resize sizeof expander

我正在使用两个带有TextBox的扩展器。在编写文本期间,TextBox会动态更改高度。当TextBox的大小高于父窗口时,不显示滚动条。这是一个例子:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="150" Width="150">

    <Grid Name="LayoutRoot">
        <Grid.RowDefinitions>
            <RowDefinition Height="*" Name="GridRow1"></RowDefinition>
            <RowDefinition Height="*" Name="GridRow2"></RowDefinition>
        </Grid.RowDefinitions>
        <Expander Grid.Row="0">
            <TextBox TextWrapping="Wrap" VerticalScrollBarVisibility="Auto"/>
        </Expander>
        <Expander Grid.Row="1">
            <TextBox TextWrapping="Wrap" VerticalScrollBarVisibility="Auto"/>
        </Expander>
    </Grid>
</Window>

我需要将扩展​​器的最大高度设置为父窗口的一半大小(窗口可调整大小)。如果文本长于窗口的一半大小,则应显示滚动条。另外,当两个膨胀机都关闭时,它们应该在顶部彼此靠近。

当行定义为星号(*)但是封闭的扩展器不在顶部时,滚动条效果很好。

1 个答案:

答案 0 :(得分:2)

将您的要求应用于Style DataTrigger RowDefinition

<Grid Name="LayoutRoot">
  <Grid.RowDefinitions>
    <RowDefinition Name="GridRow1">
      <RowDefinition.Style>
        <Style TargetType="{x:Type RowDefinition}">
          <Setter Property="Height"
                  Value="*" />
          <Style.Triggers>
            <DataTrigger Binding="{Binding ElementName=expanderOne,
                                            Path=IsExpanded}"
                          Value="False">
              <Setter Property="Height"
                      Value="Auto" />
            </DataTrigger>
          </Style.Triggers>
        </Style>
      </RowDefinition.Style>
    </RowDefinition>
    <RowDefinition Name="GridRow2"
                    Height="*" />
  </Grid.RowDefinitions>
  <Expander x:Name="expanderOne"
            Grid.Row="0">
    <TextBox TextWrapping="Wrap"
              VerticalScrollBarVisibility="Auto" />
  </Expander>
  <Expander Grid.Row="1">
    <TextBox TextWrapping="Wrap"
              VerticalScrollBarVisibility="Auto" />
  </Expander>
</Grid>