簡體   English   中英

scrollViewer中的LonglistSelector無法滾動

[英]LonglistSelector in scrollViewer not scrollable

在我的項目中,我需要顯示一個按鈕列表,其中包含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 ,布爾值,指示它是否被選擇(另一種方式)或者不和一個字符串Link ,其在定義點擊事件返回。

結果看起來像這樣: 問題

但問題是我無法滾動...

為什么會這樣呢? 如何解決?

編輯:

當我玩着longlistselector和周圍的東西時,我發現滾動有效,問題是LongListSelector只加載適合消息框的項目,而不是全部加載.....(當我創建較小的消息框時,它顯示更少的項目,當我創建更大的項目時,它會顯示更多)

因此,問題轉向:

如何使LONGLISTSELECTOR顯示所有項目,而只是適合屏幕。

因此,我在代碼中看到了三個明顯的問題:

  1. 您正在C#中創建ScrollViewer的新實例,但實際上並未將choiceSelector實例添加到viewer實例中。 不知道您是否只是在示例中忽略了它,或者您實際上沒有添加它。

  2. 我不建議在ScrollViewer中添加LongListSelector ....,因為默認情況下它已經滾動了。 您的問題是將LongListSelector放在StackPanel中,這不會以任何方式限制LongListSelector的高度。

    相反,我會將LongListSelector放在Grid控件中,並將行高定義為*。 這意味着網格高度被限制在父容器中。

  3. 話雖如此,您是否已經從http://phone.codeplex.com工具包中研究了ListPicker控件? 似乎它與您要尋找的東西有點接近。

高溫超導

這就是我在代碼中使用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>

將longlistselector的高度限制為200左右,該高度小於用戶控件的高度。 確保在長列表選擇器的xaml中提到Height =“”屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM