在我的项目中,我需要在custommessagebox中显示一个按钮列表。
现在,我没有设置它的问题,但是当我创建longlistselector时,将它添加到scrollviewer并显示cusstommessagebox,只显示几个按钮,我无法滚动更多。
我的代码如下:
private void btnChronicity_ButtonClicked(object sender, Events.LinkEventArgs e)
{
editBox = new CustomMessageBox()
{
....
};
ScrollViewer viewer = new ScrollViewer();
choiceSelector = new Controls.MessageBocChoiceSelectorControl();
List<items> chronicity = new List<items>();
foreach (ChronicityModel chronicity in ...Chronicities)
{
chronicity.Add(new items(chronicity.Name, chronicity.Selected, chronicity.Id));
}
choiceSelector.ItemSource = chronicity;
editBox.Content = viewer;
editBox.Show();
}
并且choiceselector是usercontrol,如下所示:
<StackPanel>
<Controls:LongListSelector x:Name="LayoutRoot">
<Controls:LongListSelector.ItemTemplate>
<DataTemplate>
<Controls1:CheckableListButton Header1="{Binding Header}"
Selected="{Binding Selected}"
Link="{Binding Link}"
ButtonClicked="CheckableListButton_ButtonClicked"/>
</DataTemplate>
</Controls:LongListSelector.ItemTemplate>
</Controls:LongListSelector>
</StackPanel>
其中listbutton
是另一个控件,基本上button
包含多个textBlocks
,boolean指示它是否被选中(另一个样式)和字符串Link
,这是在自定义点击事件中返回。
结果看起来像这样:
但问题是我无法滚动...
为什么会这样?如何解决?
当我使用longlistselector和周围的东西我已经发现滚动工作时,问题是LongListSelector只加载尽可能多的项目,而不是所有这些......(当我创建较小的消息框时) ,它显示较少的项目,当我创建更大,它显示更多)
所以问题转移到了:
如何使LONGLISTSELECTOR显示所有项目,只要适合屏幕即可。
答案 0 :(得分:3)
因此,我在代码中看到了三个不同的问题:
您正在使用C#创建ScrollViewer的新实例,但实际上并未将choiceSelector
实例添加到viewer
实例。不确定你是不是刚把它留在样品中,或者你实际上没有添加它。
我不建议在ScrollViewer中添加LongListSelector ....因为默认情况下它已经滚动了。您的问题是您将LongListSelector放在StackPanel中,它不会以任何方式限制LongListSelector的高度。
相反,我会将LongListSelector放在Grid控件中,并使用 行高定义为*。这意味着网格高度为 约束到父容器。
话虽如此,您是否已查看http://phone.codeplex.com工具包中的ListPicker控件?这似乎与你正在寻找的东西更接近。
HTH
答案 1 :(得分:0)
这就是我在代码中使用longlistselector的方式,它对我来说非常适合无限滚动。 看看它是否对你有帮助。
<Grid Background="#FFE6E2E2" Margin="10,10,0,0">
<phone:LongListSelector x:Name="lb" Margin="0,0,0,0" ItemTemplate="{StaticResource ItemTemplate}"></phone:LongListSelector>
</Grid>
答案 2 :(得分:0)
将longlistselector的高度限制为大约200左右,这小于usercontrol的高度。确保在longlist选择器的xaml中提到Height =“”属性。