Silverlight绑定到数据模板内的用户控件



在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",那么内容应该适合所有可用的空间

最新更新