簡體   English   中英

以編程方式將內容添加到scrollviewer,滾動條停止工作

[英]Programmatically adding content to scrollviewer, scrollbar stops working

好的,所以我不是那么精通強大的WPF,但是我嘗試了一個有趣的項目。 我制作了一個簡單的RSS / ATOM提要查看器,將HTML和RRS或ATOM提要拉出並將其粘貼在添加到堆棧面板中的Browser控件中,這是ScrollViewer的內容。 呼。 無論如何,問題是,我正在后面的代碼中進行所有這些操作,並且發現ScrollViewer不起作用,或者無法識別內容的大小,因此沒有滾動。 我嘗試設置查看器和內容的大小以及最小和最大大小。

我在這里想念什么? 內容在那里,並且如果我在WPF加載之前就加載了它,則可以運行,但是一旦我嘗試更改或從控件中“清除”子級,scrollviewer就會停止正常運行。

<Window x:Class="Heine.Syndication.xkcd.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Feed Viewer" Height="600" Width="800">
<StackPanel>
    <ToolBarPanel >
        <ToolBar>
            <ComboBox Margin="0" Width="100" Name="cbController">
                <MenuItem Header="xkcd" Name="xkcdMI"/>
                <MenuItem Header="9Gag" Name="nineGagMI"/>
                <MenuItem Header="reddit" Name="redditMI"/>
            </ComboBox>
        </ToolBar>
    </ToolBarPanel>
    <Grid Name="svMain">

    </Grid>
</StackPanel>
</Window>

    public MainWindow()
    {
        InitializeComponent();

        cbController.SelectedIndex = 0;

        xkcdMI.Click += xkcdMI_Click;
        nineGagMI.Click += nineGagMI_Click;
        redditMI.Click += redditMI_Click;

        Load("http://xkcd.com/atom.xml");
    }

    private void Load(string feedUrl)
    {
        var reader = XmlReader.Create(feedUrl);
        var feed = SyndicationFeed.Load<SyndicationFeed>(reader);
        svMain.Children.Clear();

        var tmpStack = new StackPanel();


        foreach (var item in feed.Items)
        {
            var browser = new WebBrowser();

            GetHTML(ref browser, item);

            tmpStack.Children.Add(browser);
        }

        svMain.Children.Add(new ScrollViewer()
        {
            Content = tmpStack,
            Height = svMain.Height
        });
    }

好吧,所以我很不幸地回答了我自己的問題,而沒有發瘋並重寫很多東西。 因此,在我的研究中,事實證明,在.NET 4.0和4.5中,只要您知道自己在做什么,StackPanel就可以與ScrollView一起使用。 我同意剩下的意見,即MVVM是后台發生的事情,即使我有適當的模型,視圖,偵聽器/處理程序等,我的代碼實際上也反映了我必須對其進行更改以嘗試使其正常運行的內容。全部內置到框架中)。

因此,鑒於以上所述,我的問題的答案以及該鏈接使我發現,設置網格的大小(包含滾動視圖和其他類似的樂趣)使其可以像宣傳的那樣工作。 問題顯然是網格向滾動視圖報告它的大小不確定,所以滾動視圖可能也是如此。 所以...對於上面的代碼,我需要處理整個表單的大小調整並相應地設置網格的高度。

<Grid Name="svMain" Height="550">

</Grid>

如何使ScrollViewer在StackPanel中工作?

暫無
暫無

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

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