我正在使用两个带有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>
我需要将扩展器的最大高度设置为父窗口的一半大小(窗口可调整大小)。如果文本长于窗口的一半大小,则应显示滚动条。另外,当两个膨胀机都关闭时,它们应该在顶部彼此靠近。
当行定义为星号(*)但是封闭的扩展器不在顶部时,滚动条效果很好。
答案 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>