0

我一个接一个地使用两个带有 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>

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

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

4

1 回答 1

2

Style DataTrigger在for中应用您的要求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>
于 2013-06-07T08:04:57.693 回答