2012-11-19 3 views
1

WPF 프로젝트에서 CefSharp을 사용하고 있습니다. 나는 그렇게처럼 내 MainWindow.xaml에 CefSharp.Wpf.WebView 클래스를 추가 해요 :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를 제거하고 webView 직접 DockPanel에 추가하는 경우, 그것은 잘 나타납니다. 그러나 webViewGridcol1에 추가하려고하면 표시되지 않습니다. 너비/높이를 지정하면 그리드 열에 표시되지만 HorizontalAlignment.Stretch은 작동하지 않으며 너비와 높이가 100 % 필요합니다! 작동하지 않는 그리드에 webView를 추가

내 코드 :

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

답변

0

문제 어린이 속성은 InitializeComponent를 채워된다는 점이다. 자식을 초기화 한 후 그리드에 추가하는 경우 ObservableCollection이 아니므로 Children 컬렉션에 추가 할 속성 변경 이벤트가 없습니다. 새 컬렉션을 만들려면 프로그래밍 방식으로 작동한다고 생각하지만 xaml에서 웹 뷰를 정의하면 피할 수 있습니다 (paramaterless 생성자가있는 경우). OnLoaded 그러면 URL과 설정을 삽입 할 수 있습니다.

+0

그럼 너비와 높이를 설정하면 어떻게 될까? 그리고 width = 100 % 등을 설정하는 다른 방법이 있습니까? –

+0

이 링크는 wpf 레이아웃에 대해 자세히 설명합니다. http://msdn.microsoft.com/en-us/library/ms745058.aspx. 일반적으로 사용자 지정 컨트롤은 필요한만큼의 공간이나 측정 값 패스에 지정된 모든 공간을 사용하도록 작성됩니다. 패널의 작업 (이 경우 그리드)은 자식에게주는 공간의 양을 제한하고 그 자식과의 관계로 배치합니다. – user1834059