好吧,所以我不熟悉强大的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