使用动态控件添加网格RowDefinitions

时间:2015-04-20 14:30:45

标签: c# wpf

首先,让我说出我的意图。这是我正在寻找的最终结果。

Mockup Of Intent http://s18.postimg.org/x818zbfbb/image.png

然而,我的代码输出无法实现这一点。这就是我的所作所为。这是我的MainWindow XAML。

<Window x:Class="App.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="" Height="200" Width="400"
        WindowStartupLocation="CenterScreen" Name="ViewData">
    <Grid Name="splMain" Background="{StaticResource GreyGradient}"></Grid>
</Window>

这是动态RowDefitions创建的C#代码:

private void ViewImgData(SubPod subPod)
        {
            var wb = new WebBrowser();
            wb.Navigate(subPod.Image.Src);
            var rowDefinition = new RowDefinition();
            rowDefinition.Height = GridLength.Auto;
            splMain.RowDefinitions.Add(rowDefinition);
            Grid.SetRow(wb, 0); 
            ((MainWindow)System.Windows.Application.Current.MainWindow).splMain.Children.Add(wb);

        }

我在这里打来电话。保证这个foreach循环不止一次运行。 但是,我的输出窗口只显示1张图片而不是2张或更多,这也不占用窗口的整个空间。

foreach (SubPod subPod in pod.SubPods)
                        {
                            Application.Current.Dispatcher.BeginInvoke(
                             DispatcherPriority.Background,
                             new Action(() => ViewImgData(subPod)));
                        }

我在哪里弄错了?感谢。

1 个答案:

答案 0 :(得分:1)

添加新行,但将新的webbrowser组件放在第0行。 尝试

Grid.SetRow(wb, splMain.RowDefinitions.Count-1); 

相反,因为您需要在新行中放置新内容。

编辑: 要适合网格高度和宽度,请尝试将其添加到splMain网格

Width="{Binding ActualWidth,RelativeSource={RelativeSource AncestorType={x:Type Window}}" Height="{Binding ActualHeight,RelativeSource={RelativeSource AncestorType={x:Type Window}}"

另见Stretch Grid to window size