わかりましたので、私は強力な WPF に精通しているわけではありませんが、それに飛び込むために興味深いプロジェクトを試みました。HTML を RRS または ATOM フィードから引き出して、スタック パネルに追加された Browser コントロールに貼り付けるシンプルな RSS/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
});
}