好吧,所以我不熟悉強大的WPF,但我嘗試了一個有趣的項目來進入它。我製作了一個簡單的RSS/ATOM訂閱查看器,它將HTML和RRS或ATOM訂閱源提取出來並粘貼到一個瀏覽器控件中,該控件被添加到堆棧面板中(這是一個ScrollViewer的內容)。呼。無論如何,問題是,我在後面的代碼中完成了這一切,並發現ScrollViewer無法工作,或者無法識別內容的大小,所以沒有滾動。我曾嘗試設置查看器和內容的大小,並嘗試了最小和最大尺寸。編程向滾動查看器添加內容,滾動條停止工作
缺少什麼我在這裏?內容是存在的,如果我在加載WPF之前加載它,但是一旦我嘗試更改或從控件中「清除」子項時,滾動查看器將停止正常工作。
<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
});
}
你能清楚地描述什麼是不工作的,例如是ScrollViewer拒絕滾動?它根本不顯示這些項目嗎? –
'Stackpanel'控件混亂了滾動條。我建議開始檢查MVVM模式,以及如何在WPF中應用綁定和數據模板,而不是嘗試在代碼ala WinForms中創建和分配子控件。 –
@FabianTamp項目加載,他們都在那裏(我可以看到他們,如果我調整整個表單),但滾動條灰色,不會讓我滾動。底部沒有箭頭......這使我認爲這是某種財產,但我沒有找到可行的東西 – iMortalitySX