2016-05-31 9 views
1

내 프로젝트에서 2 개의 창을가집니다. 하나는 MainWindow.xaml이고 다른 하나는 Control_Page.xaml입니다. ColumnDefinition 및 RowDefinition에 제어 페이지 창을 삽입하고 싶습니다. 이 정의는 MainWindow에 정의되어 있습니다. 나는이 바르에 Control_Page를 불렀다열 정의의 다른 창

<Grid x:Name="Grid_Main" SnapsToDevicePixels="True"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="312*"/> 
     <ColumnDefinition Width="353*"/> 
     <ColumnDefinition Width="351*"/> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="187*"/> 
     <RowDefinition Height="187*"/> 
     <RowDefinition Height="186*"/> 
     <RowDefinition Height="178*"/> 
    </Grid.RowDefinitions> 

    <Grid Grid.Column="0" Grid.Row="0" Margin="0"/> 
    <Grid Grid.Column="1" Margin="0"/> 
    <Grid Grid.Column="2" Margin="0"/> 
    <Grid Margin="0" Grid.Row="1"/> 
    <Grid Grid.Column="1" Margin="0" Grid.Row="1"> 
     <Button Content="Button" Margin="0" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
    </Grid> 
    <Grid Grid.Column="2" Margin="0" Grid.Row="1"> 
     <Button x:Name="button1" Content="Button" HorizontalAlignment="Center" Margin="0" VerticalAlignment="Center"/> 
    </Grid> 
    <Grid Margin="0" Grid.Row="2"/> 
    <Grid Grid.Column="1" Margin="0" Grid.Row="2"/> 
    <Grid Grid.Column="2" Margin="0" Grid.Row="2"/> 
    <Grid Margin="0" Grid.Row="3"/> 
    <Grid Grid.Column="1" Margin="0" Grid.Row="3"/> 
    <Grid Grid.Column="2" Margin="0" Grid.Row="3"/> 
</Grid> 

:

여기 내 코드입니다. 그런 다음 주 창으로 아이들로 시도하지만 작동하지 않습니다.

나는 이것을 시도하지 못했다.이 문제를 해결할 수 없다.

코드 뒤에서; 다른 윈도우의 자식으로 창을 삽입

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 

     var newWindow = new Control_Page(); 
     Grid.SetRow(newWindow, 0); 
     Grid.SetColumn(newWindow, 0); 
     Grid_Main.Children.Add(newWindow); 
    } 
} 
+0

1)'Control_Page'를 동적으로 또는 정적으로 추가 하시겠습니까? 2) 왜 그리드 안에 그리드가 많이 필요합니까? – Dennis

+0

안녕하세요. Dennis, 저는 많은 Windows를 만들고 행이나 열에서 Windows의 위치를 ​​동적으로 변경합니다. 그런 다음 선택한 창에 대해 선택한 창에 대해 2x2 셀을 사용하는 스팬 메서드가 사용됩니다 (다음 장이됩니다). –

답변

0

수 없습니다, 당신은 { "트리의 루트해야합니다 창. 비주얼의 자식으로 창을 추가 할 수 없습니다."}는 끝낼 것이다 예외.

Control_Page.xaml을 UserControl으로 그리드에 추가 할 수 있습니다. 이제는 .xaml 파일 (및 해당 .cs 파일)의 Window에서 UserControl으로 변경해야합니다.

<Grid x:Name="Grid_Main" SnapsToDevicePixels="True"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="312*"/> 
     <ColumnDefinition Width="353*"/> 
     <ColumnDefinition Width="351*"/> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="187*"/> 
     <RowDefinition Height="187*"/> 
     <RowDefinition Height="186*"/> 
     <RowDefinition Height="178*"/> 
    </Grid.RowDefinitions> 

    <Control_Page Grid.Column="0" Grid.Row="0" /> 

    <Grid Grid.Column="0" Grid.Row="0" Margin="0"/> 
    <Grid Grid.Column="1" Margin="0"/> 
    <Grid Grid.Column="2" Margin="0"/> 
    <Grid Margin="0" Grid.Row="1"/> 
    <Grid Grid.Column="1" Margin="0" Grid.Row="1"> 
     <Button Content="Button" Margin="0" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
    </Grid> 
    <Grid Grid.Column="2" Margin="0" Grid.Row="1"> 
     <Button x:Name="button1" Content="Button" HorizontalAlignment="Center" Margin="0" VerticalAlignment="Center"/> 
    </Grid> 
    <Grid Margin="0" Grid.Row="2"/> 
    <Grid Grid.Column="1" Margin="0" Grid.Row="2"/> 
    <Grid Grid.Column="2" Margin="0" Grid.Row="2"/> 
    <Grid Margin="0" Grid.Row="3"/> 
    <Grid Grid.Column="1" Margin="0" Grid.Row="3"/> 
    <Grid Grid.Column="2" Margin="0" Grid.Row="3"/> 
</Grid> 
+0

감사합니다 Laskoran 유용 해 보입니다 :) –

+0

고마워요 많이 작동합니다! –