ItemsControl高度问题

时间:2014-03-27 17:06:04

标签: wpf wpf-controls

我试图将itemscontrol的高度设置为网格行定义中定义的值。如果我手动设置itemscontrol的高度,它当然会影响控件。我如何绑定或实现此行为?我只想让我的itemscontrol大小由网格决定。谢谢!

<ScrollViewer>

        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="600"/>
                <RowDefinition Height="500"/>
            </Grid.RowDefinitions>

            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>

            <ItemsControl Grid.Row="1" Grid.Column="0" Name="MIPRegion" cal:RegionManager.RegionName="MIPRegion" />

        </Grid>
    </ScrollViewer>

3 个答案:

答案 0 :(得分:2)

您可以绑定到RowDefinition的ActualHeight属性。

<ScrollViewer>

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition x:Name="rowDef0" Height="600"/>
            <RowDefinition x:Name="rowDef1" Height="500"/>
        </Grid.RowDefinitions>

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <ItemsControl Height="{Binding Path=ActualHeight, ElementName=rowDef1}"
                      Grid.Row="1" Grid.Column="0" Name="MIPRegion" 
                      cal:RegionManager.RegionName="MIPRegion" />

    </Grid>
</ScrollViewer>

答案 1 :(得分:1)

试试这个

我没有使用Actualheight和actualwidth进行绑定,因为Width和height本身的类型是GridLength。

 <ScrollViewer>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="600"/>
            <RowDefinition x:Name="RowHeight" Height="500"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" x:Name="ColumnWidth"/>
        </Grid.ColumnDefinitions>
        <ItemsControl Grid.Row="1" Background="Green" Width="{Binding ElementName=ColumnWidth,Path=Width}" Height="{Binding ElementName=RowHeight,Path=Height}" Grid.Column="0" Name="MIPRegion"  >               
        </ItemsControl>
    </Grid>
    </ScrollViewer> 

答案 2 :(得分:0)

在我的情况下,RowDefinition的高度设置为*,它只在我将ItemsControl.Height绑定到Height属性而不是ActualHeight时才起作用。然后我意识到double和GridLenght之间的这种绑定是不正确的。 (BindingExpression生成的值对目标属性无效.; Value ='*'BindingExpression:Path = Height;)但我仍然确认在某些情况下,对ActualHeight的绑定没有按预期工作。