0

在我的项目中,我需要在 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 显示所有项目,而不是尽可能多地适合屏幕。

4

3 回答 3

3

因此,我在代码中看到了三个不同的问题:

  1. 您正在 C# 中创建 ScrollViewer 的新实例,但实际上并未将choiceSelector实例添加到viewer实例中。不确定您是否只是在示例中遗漏了它,或者您实际上并没有添加它。

  2. 我不建议在 ScrollViewer 中添加 LongListSelector .... 因为它已经默认滚动。您的问题是您将 LongListSelector 放在 StackPanel 中,这不会以任何方式限制 LongListSelector 的高度。

    相反,我会将 LongListSelector 放在 Grid 控件中,行高定义为 *。这意味着 Grid 高度被限制在父容器中。

  3. 话虽如此,您是否查看过http://phone.codeplex.com Toolkit中的 ListPicker 控件?这似乎更接近你正在寻找的东西。

高温高压

于 2013-12-10T05:40:15.100 回答
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>
于 2013-12-10T07:45:29.413 回答
0

将 longlistselector 的高度限制为 200 左右,小于用户控件的高度。确保在长列表选择器的 xaml 中提及 Height = " " 属性。

于 2015-10-10T09:16:35.713 回答