Wpf 行高don';不包括滚动浏览功能

Wpf 行高don';不包括滚动浏览功能,wpf,Wpf,我目前正在创建一个新的WPF窗口,如下所示: 以“过滤器”和数组开头的部分定义如下: <Grid Grid.Row="2" Visibility="{Binding FilterVisibility}"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> </Grid.RowD

我目前正在创建一个新的WPF窗口,如下所示:

以“过滤器”和数组开头的部分定义如下:

<Grid Grid.Row="2" Visibility="{Binding FilterVisibility}">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
<TextBlock Margin="20,0,0,0" HorizontalAlignment="Left"
            Text="{Binding Source={x:Static dictionnaries:MainDictionnary.bcfFilter}, StringFormat={}{0} :}"/>
<Grid Grid.Row="1">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" MinWidth="150"/>
        <ColumnDefinition/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <ItemsControl Grid.Column="1" Margin="2" Grid.IsSharedSizeScope="True"
                    ItemsSource="{Binding Filters}">
        <ItemsControl.Template>
            <ControlTemplate>
                <Border Background="White" BorderBrush="Black" BorderThickness="1">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="*"/>
                        </Grid.RowDefinitions>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto" SharedSizeGroup="col1"/>
                                <ColumnDefinition Width="1" SharedSizeGroup="marg"/>
                                <ColumnDefinition Width="Auto" SharedSizeGroup="col2"/>
                                <ColumnDefinition Width="1" SharedSizeGroup="marg"/>
                                <ColumnDefinition Width="Auto" SharedSizeGroup="col3"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <TextBlock Text="{x:Static dictionnaries:MainDictionnary.filterField}" 
                                                    Grid.Column="0"
                                                    Margin="5,2"/>
                            <Line Grid.Column="1"
                                            Y2="{Binding ActualHeight, Mode=OneWay, RelativeSource={RelativeSource Self}}"
                                            Stroke="Gray"
                                            HorizontalAlignment="Center"/>
                            <TextBlock Text="{x:Static dictionnaries:MainDictionnary.filterCondition}"
                                                Grid.Column="2" Margin="5,2"
                                                TextWrapping="WrapWithOverflow" TextAlignment="Center"/>
                            <Line Grid.Column="3"
                                            Y2="{Binding ActualHeight, Mode=OneWay, RelativeSource={RelativeSource Self}}"
                                            Stroke="Gray"
                                            HorizontalAlignment="Center"/>

                            <TextBlock Text="{x:Static dictionnaries:MainDictionnary.filterValue}"
                                                Grid.Column="4" Margin="5,2"
                                                TextWrapping="WrapWithOverflow" TextAlignment="Center"/>
                        </Grid>
                        <Line Grid.Row="0" Fill="Black" 
                                        X2="{Binding ActualWidth, Mode=OneWay ,RelativeSource={RelativeSource Self}}" 
                                        Stroke="Black" VerticalAlignment="Bottom"/>
                        <ScrollViewer Grid.Row="1" MinHeight="50" VerticalScrollBarVisibility="Auto">
                            <ItemsPresenter/>
                        </ScrollViewer>
                    </Grid>
                </Border>
            </ControlTemplate>
        </ItemsControl.Template>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto" SharedSizeGroup="col1"/>
                        <ColumnDefinition Width="1" SharedSizeGroup="marg"/>
                        <ColumnDefinition Width="Auto" SharedSizeGroup="col2"/>
                        <ColumnDefinition Width="1" SharedSizeGroup="marg"/>
                        <ColumnDefinition Width="Auto" SharedSizeGroup="col3"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <ComboBox Grid.Column="0" VerticalAlignment="Center" Margin="3" SelectedItem="{Binding Field}"/>
                    <Line Grid.Column="1"
                                    Y2="{Binding ActualHeight, Mode=OneWay, RelativeSource={RelativeSource Self}}" 
                                        Stroke="Gray"
                                    HorizontalAlignment="Center"/>
                    <ComboBox Grid.Column="2" VerticalAlignment="Center" Margin="3" SelectedItem="{Binding Condition}"/>
                    <Line Grid.Column="3"
                                    Y2="{Binding ActualHeight, Mode=OneWay, RelativeSource={RelativeSource Self}}" 
                                    Stroke="Gray" 
                                    HorizontalAlignment="Center"/>
                    <TextBox Grid.Column="4"  VerticalAlignment="Center" 
                                HorizontalAlignment="Left" Margin="3"
                                MinWidth="50"
                                Text="{Binding Value, UpdateSourceTrigger=PropertyChanged, NotifyOnTargetUpdated=True}"/>
                    <Line VerticalAlignment="Bottom" 
                                    Grid.ColumnSpan="6" Grid.Column="0"
                                    X2="{Binding ActualWidth, Mode=OneWay, RelativeSource={RelativeSource Self}}"
                                    Stroke="Black"/>
                </Grid>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
    <StackPanel Grid.Column="2" Margin="0,0,20,0">
        <Button Height="{Binding ActualWidth, RelativeSource={RelativeSource Self}}" Margin="2" Padding="0"
                Command="{Binding AddFilterCommand}">
            <Path Stroke="Black" StrokeThickness="1" VerticalAlignment="Center">
                <Path.Data>M0,5 H10 M5,0 V10</Path.Data>
            </Path>
        </Button>
        <Button Height="{Binding ActualWidth, RelativeSource={RelativeSource Self}}" Margin="2"
                Command="{Binding RemoveFilterCommand}">
            <Path Stroke="Black" StrokeThickness="1" VerticalAlignment="Center">
                <Path.Data>M0,0 H8</Path.Data>
            </Path>
        </Button>
    </StackPanel>
</Grid>

M0,5 H10 M5,0 V10
M0,0 H8

此部分的可见性由我的viewmodel控制。在此之前,一切都正常工作,但当我使用+按钮向数组添加新行时,我希望数组不要增长,而是使用ScrollViewer。因此,在ItemControl.template中添加了ScrollViewer

但我得到了这个结果:


如何使scrollviewer工作?

将第二个
行定义的
高度设置为
*

<RowDefinition Height="*"/>

或者设置
ItemsControl
ScrollViewer
Height
属性


ScrollViewer
必须具有受约束的高度才能计算可滚动的查看端口。

滚动查看器在固定高度上工作,当网格行高度仅将可用空间除以2时提供自动功能,将其拉紧,设置高度或最大值height@Muds谢谢你,我想换一个解决方案,但我会接受的谢谢!再简单不过了