Silverlight绑定到DataTemplate中的用户控件

时间:2011-09-22 09:06:00

标签: silverlight data-binding binding mvvm datatemplate

在Silverlight中,我有一个DataTemplate绑定到一个对象,该对象包含一个包含UserControl的属性。

在DataTemplate中,我想绑定到包含UserControl的属性,以便UserControl显示为DataTemplate的一部分。

目前,我正在使用ItemsControl并将ItemsSource绑定到包含UserControl的属性,这是有效的,但是,UserControl没有填充可用空间,这让我想知道是否有更好的方法这样做。

感谢您的帮助。

马丁。

编辑:根据要求提供一些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");
  }
}

1 个答案:

答案 0 :(得分:0)

不知道为什么你使用ItemsControl来显示内容,也许你在使用ContentControl时尝试使用它。

<ContentControl Content="{Binding Contents}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" ...

注意属性Horizo​​ntalContentAlignment和VerticalContentAlignment,这些属性设置控件内容的对齐方式,因此如果将它们设置为“Stretch”,则内容应该适合所有可用空间。