在我的项目中,我需要在 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();
}
并且选择选择器是用户控件,它看起来像:
<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>
wherelistbutton
是另一个控件,基本上button
包含几个textBlocks
布尔值,指示它是否被选中(另一种样式)和一个字符串Link
,在自定义点击事件中返回。
结果看起来是这样的:
但问题是我不能滚动...
为什么会这样?如何解决?
编辑:
当我使用 longlistselector 和周围的东西时,我发现滚动有效,问题是 LongListSelector 只加载适合消息框的项目而不是所有项目.....(当我创建较小的消息框时,它显示更少的项目,当我创建更大时,它会显示更多)
所以问题转移到了一点:
如何使 LONGLISTSELECTOR 显示所有项目,而不是尽可能多地适合屏幕。