如何将ListView高度设置为XAML中约束行的高度

时间:2017-06-23 15:03:08

标签: wpf xaml listview binding

我无法弄清楚告诉ListView的语法,它的高度是包含ListView的行的高度,即ListView的父级。 这是用户控件中的xaml。我已经把我认为会起作用的东西,但不是。我把它留在那里所以你会看到我正在尝试的东西。

<ListView Grid.Row="1" 
Height="{Binding Path=Height,RelativeSource={RelativeSource AncestorType=Grid.Row}}"
ItemsSource="{Binding Folders}"
ItemTemplate="{StaticResource FolderListTemplate}"
SelectionMode="Single"
SelectedIndex="1"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
Margin="3"
ScrollViewer.VerticalScrollBarVisibility="Visible"
ScrollViewer.CanContentScroll="True"
/>

谢谢,

1 个答案:

答案 0 :(得分:1)

只需将 RowDefinition 高度设置为自动,这是我的xaml:

<Grid Background="DimGray">
        <Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="50"/>
        </Grid.RowDefinitions>
        <StackPanel Background="CornflowerBlue"/>
        <ListView Grid.Row="1" 
                  x:Name="ListView"
                  ItemsSource="{Binding Items}"
                  SelectionMode="Single"
                  SelectedIndex="1"
                  VerticalAlignment="Stretch"
                  HorizontalAlignment="Stretch"
                  Margin="3"
                  ScrollViewer.VerticalScrollBarVisibility="Visible"
                  ScrollViewer.CanContentScroll="True"/>

        <StackPanel Grid.Row="2" Background="CornflowerBlue"/>
    </Grid>

输出: enter image description here

如果您使用星号表示法,那么它所使用的行将获取您给出的星号值的可用高度,在这种情况下 1 * 与*****相同。 如果我修改为使用星值:

<Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="50"/>
        </Grid.RowDefinitions>

输出:

enter image description here

希望这有帮助