2012-11-19 50 views
1

我在我的WPF项目中使用CefSharp。我加入了CefSharp.Wpf.WebView类我MainWindow.xaml像这样:ContentControl没有显示没有指定宽度/高度

_webView = new WebView(url, _settings); 

我的XAML布局看起来是这样的:

<Window x:Class="WPFContainer.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Test Project" Height="400" Width="930" Initialized="OnWindowInit" StateChanged="OnWindowStateChanged" Closing="OnWindowClose"> 
    <DockPanel Name="MainDockPanel" Height="400" Width="930"> 
    <Grid VerticalAlignment="Top" HorizontalAlignment="Left" ShowGridLines="True" Name="mainGrid" > 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Name="col1" Width="600" /> 
      <ColumnDefinition Name="col2" Width="330"/> 
     </Grid.ColumnDefinitions> 
    </Grid> 
    </DockPanel> 
</Window> 

如果我删除Grid并添加webViewDockPanel直接,它显示得很好。但如果我尝试在Grid中将webView添加到col1,则不会显示。它将显示在网格列中,如果我指定宽度/高度,但HorizontalAlignment.Stretch不起作用,我需要100%的宽度和高度!

我对加入webView到不起作用网格代码:

mainGrid.Children.Add(_webView); 
Grid.SetColumn(_webView, 0); 

回答

0

的问题是,儿童属性中的InitializeComponent填充。如果在初始化后将子元素添加到网格中,则没有属性更改事件添加到Children集合中,因为它不是ObservableCollection。如果你要创建一个新的集合,我相信它会以编程方式工作,但是可以通过在xaml中定义你的webview(提供它具有无参数构造函数)来避免。然后,您可以注入URL和设置。

+0

那么如果我设置它显示的宽度和高度怎么办?还有另一种方法来设置宽度= 100%等? –

+0

此链接更详细地解释了wpf布局http://msdn.microsoft.com/en-us/library/ms745058.aspx。通常,自定义控件被写入消耗尽可能多的空间,或者它们在测量中给出的所有空间都通过。专家组的工作(在这种情况下是一个网格)限制它给孩子的空间量,并且将它们与自己相关联。 – user1834059

相关问题