我有一个扩展Panel的自定义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 :(得分:0)
将“宽度=”*“添加到StackPanel
在网格行,列定义中工作的哎呀。
为什么要覆盖Measure代码呢? Width的自动行为是使用可用空间。类似地,面板上的Width是标准的FrameworkElement Width属性。
答案 1 :(得分:0)
我会说你应该考虑继承ItemsControl而不是Panel。默认情况下,ItemsControl中生成的元素将占用整个宽度。