在Silverlight中,我有一个DataTemplate,它被绑定到一个包含UserControl属性的对象。
在DataTemplate中,我想绑定到保存UserControl的属性,以便UserControl作为DataTemplate的一部分显示。
目前,我正在使用ItemsControl并将ItemsSource绑定到包含UserControl的属性,这正在工作,然而,UserControl没有填充可用空间,这让我想知道是否有更好的方法来做到这一点。
谢谢你的帮助。
Martyn。EDIT: As requested some XAML:
<DataTemplate x:Key="ContentTemplate">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<TextBlock Text="Large Content" Grid.Row="0"/>
<ItemsControl ItemsSource="{Binding Contents}" Grid.Row="1" MinHeight="200" MinWidth="300" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
</Grid>
</DataTemplate>
其中,被绑定的Contents属性如下所示:
private UserControl _contents;
public UserControl Contents
{
get {return _contents;}
set
{
_contents = value;
NotifyPropertyChanged("Contents");
}
}
不知道为什么要使用ItemsControl来显示内容,也许你可以尝试使用ContentControl。
<ContentControl Content="{Binding Contents}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" ...
注意属性HorizontalContentAlignment和VerticalContentAlignment,这些属性设置了控件内容的对齐方式,所以如果你将它们设置为"Stretch",那么内容应该适合所有可用的空间