好的,我在网格单元格中有一个contentpresenter:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<WrapPanel Grid.Row="0" Grid.Column="0">
<RadioButton GroupName="a" IsChecked="{Binding Path=SpecifyRatedValues, Mode=TwoWay}">Specify</RadioButton>
<RadioButton GroupName="b" IsChecked="{Binding Path=SpecifyRatedValues, Converter={StaticResource invertBoolean}}">Auto generate</RadioButton>
</WrapPanel>
<Border BorderBrush="Black" BorderThickness="3" Grid.Row="1" Grid.Column="0">
<ContentPresenter Content="{Binding Path=RatedValues}"></ContentPresenter>
</Border>
</Grid>
contentpresenter查找在资源下定义的datatemplate使用哪个UI元素:
<DataTemplate DataType="{x:Type ViewModels:RatedValuesViewModel}">
<Views:RatedValuesView />
</DataTemplate>
现在,一切都按预期工作,除了一件事:在运行时放置在contentpresenter内的视图不会扩展以填充整个单元格。它在左侧和右侧留下了很大的余量。
如何让contentpresenter中的视图填满整个可用区域?
答案 0 :(得分:11)
HorizontalAlign =“Stretch”和VerticalAlign =“Stretch”很重要;但是,您还必须记住网格的工作原理。网格单位是绝对像素,“自动”,这意味着它们的大小适合其内容(即显示所有内容的最小尺寸),或“星星”,这意味着填满所有可用空间。
将第二个RowDefinition的高度设置为“*”。您可能还想在网格上设置易于区分的边框画笔和粗细。有时,很容易认为X没有填满所有可用空间,当它真的是X的容器,或X的容器容器没有填满空间时。使用明亮的原色和大厚度(3左右),你可以快速告诉谁没有填补。
答案 1 :(得分:3)
Chai Guy得到了它!视图具有明确的宽度和高度,当放置在单元格中时会限制视图。谢谢: - )
答案 2 :(得分:2)
您必须将HorizontalAlign = Stretch,VerticalAlign = Stretch设置为Border和Content Presenter以填充网格中的空间。并使宽度=自动。