我试图将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>
答案 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的绑定没有按预期工作。