C# ContentControl在未指定宽度/高度的情况下不显示

C# ContentControl在未指定宽度/高度的情况下不显示,c#,wpf,contentcontrol,C#,Wpf,Contentcontrol,我正在我的WPF项目中使用。我正在将CefSharp.Wpf.WebView类添加到MainWindow.xaml中,如下所示: _webView = new WebView(url, _settings); 我的XAML布局如下所示: <Window x:Class="WPFContainer.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="ht

我正在我的WPF项目中使用。我正在将
CefSharp.Wpf.WebView
类添加到MainWindow.xaml中,如下所示:

_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>

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

那么,如果我设置了显示的宽度和高度,怎么会这样呢?还有没有其他方法来设置宽度=100%等?这个链接更详细地解释了wpf布局。通常,自定义控件的编写会消耗所需的空间或度量过程中给定的所有空间。面板(在本例中为网格)的工作是限制其给其子级的空间量,并根据其自身安排它们。
mainGrid.Children.Add(_webView);
Grid.SetColumn(_webView, 0);