2012-11-19 52 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

相關問題