2009-02-24 69 views
1

我有一个扩展面板的自定义Silverlight控件。我需要数据模板(根节点是堆栈面板)占用可用宽度的100% - 但目前,堆叠面板只能填充文本的宽度。Silverlight自定义控件中的100%宽度数据模板

的在我的控制安排覆盖:

protected override Size MeasureOverride(Size availableSize) 
{ 
    foreach (FrameworkElement element in Children) 
    { 
     element.Measure(new Size(availableSize.Width, availableSize.Height)); 
    } 
    return base.MeasureOverride(availableSize); 
} 

而且我的模板:

<DataTemplate x:Name="itemTemplate"> 
    <StackPanel Background="Aqua" HorizontalAlignment="Stretch"> 
     <TextBlock TextWrapping="Wrap" Text="{Binding Name}" HorizontalAlignment="Stretch"/> 
    </StackPanel> 
</DataTemplate> 

任何帮助将不胜感激。

+0

你应该考虑使用网格而不是StackPanel – 2011-10-06 22:21:17

回答

0

添加宽度= “*” 的StackPanel的

哎呀,在网格行,列定义工作。

为什么你要重写Measure代码呢?宽度的自动行为是使用可用空间。同样,面板上的宽度是标准的FrameworkElement Width属性。

+0

当我这样做时,出现以下错误。 “属性宽度的属性值*无效。” 这发生在我的创建子例程中: FrameworkElement element = ItemTemplate.LoadContent()as FrameworkElement; – fturtle 2009-02-24 11:18:28

0

我会说你应该考虑从ItemsControl而不是Panel继承。 ItemsControl中默认生成的元素将占用整个宽度。

相关问题