Xaml 空的LongListSelector具有无限长
我有一个Xaml 空的LongListSelector具有无限长,xaml,windows-phone-7,windows-phone-8,windows-phone,longlistselector,Xaml,Windows Phone 7,Windows Phone 8,Windows Phone,Longlistselector,我有一个LongListSelector,它位于StackPanel中。当这个LLS为空时,它有无限长,并且底部的元素看不见 <StackPanel Orientation="Vertical"> <phone:LongListSelector> </phone:LongListSelector> </StackPanel> 但当我将其设置为itemsource时,它会变好。我尝试将其垂直对齐分配到顶部,但没有解决问题 如何使
LongListSelector
,它位于StackPanel
中。当这个LLS为空时,它有无限长,并且底部的元素看不见
<StackPanel Orientation="Vertical">
<phone:LongListSelector>
</phone:LongListSelector>
</StackPanel>
但当我将其设置为itemsource
时,它会变好。我尝试将其垂直对齐
分配到顶部,但没有解决问题
如何使它的大小不填充表单?(我编辑了这篇文章以使其更好)
首先,让我们描述一下您遇到的问题,我们将使用:
问题:无限长的LongListSelector(LLS)-老实说,这不是问题,它的工作原理应该是这样的。因为LLS可以有很多物品,而且可以很长,就像它的名字所说的那样。问题是在StackPanel中使用它时,没有固定其高度
解决方案:<StackPanel Orientation="Vertical">
<phone:LongListSelector Height="300"/>
<TextBlock Text="Something/>
</StackPanel>
堆叠面板的作用是什么?这就是所有相关的xaml吗?另外,我假设您的意思是垂直对齐=“顶部”,因为预计顶部的水平对齐将不起作用:坑中包含更多的元素,包括LLS的顶部和底部。感谢您的注意,我已经修复了它。如果可以避免的话,我不会搞砸MeasureOverride
,它似乎经常会导致问题。我面前没有一个WP项目要测试,但试着将其嵌入网格
中,并对其应用垂直对齐
,作为其子元素,LLS应尊重面板的测量。谢谢@ChrisW。使用网格
而不是堆叠面板
意味着全新的设计。现在它起作用了,以后我会避免把它放在那个里!不,你会保留你的SP,只需将LLS单独嵌入其中,不做任何更改,但看起来你得到了解决方案,这才是最重要的。干杯,谢谢你。有一个错误说:MeasureOverride of element'Phoney.Extensions.LongListSelectorEx'不应返回PositiveInfinity或NaN作为其所需大小。
Yeah-问题是宽度没有定义,我如上所述尝试过(已编辑)。如果不想定义宽度,请修改If语句中的返回值(改为this.width put 0)。告诉我它是否有效。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="8*"/>
<RowDefinition Height="2*"/>
</Grid.RowDefinitions>
<phone:LongListSelector Width="100" Grid.Row="0"/>
<TextBlock Text="Something" Grid.Row="1"/>
</Grid>
namespace Extensions
{
public class LongListSelectorEx : LongListSelector
{
protected override System.Windows.Size MeasureOverride(System.Windows.Size availableSize)
{
if (this.ItemsSource == null)
return new System.Windows.Size(this.Width, 0);
if (this.ItemsSource.Count <= 0)
return new System.Windows.Size(this.Width, 0);
return base.MeasureOverride(availableSize);
}
}
}
<phone:PhoneApplicationPage
// something before
xmlns:common="clr-namespace:Extensions"
// other things
>
<StackPanel Orientation="Vertical">
<common:LongListSelectorEx Width="200"/>
<TextBlock Text="Something/>
</StackPanel>