2012-12-30 2 views
1

페이지에 ContentControl이 있습니다. ContentControl은 현재 DataGrid를 포함하고있는 UserControl에 동적으로 설정됩니다. 이 경우 페이지가 화면에서 사라지게되는 DataGrid의 내용에 맞게 페이지 크기가 조정됩니다.ContentControl이 변경 될 때 창 크기를 유지하는 방법

페이지 너비를 자동에서 하드 코드 된 값으로 변경하면 ContentControl이 동적으로 설정되면 페이지 너비가 변경되지 않습니다. 이것은 내가 원하는 행동입니다. 그러나 이것은 또한 사용자가 창을 수동으로 드래그하여 창 크기가 커지면 윈도우의 내용이 내가 설정 한 하드 코드 된 폭 값보다 커지지 않음을 의미합니다.

사용자가 창 크기를 늘리더라도 페이지가 커질 수있게하면서 ContentControl이 설정된 경우 페이지가 동일한 크기를 유지하게하려면 어떻게해야합니까? 당신은 내가 800의 minWidth를 가지고 볼 수 있고, CheckoutScreen 버튼을 클릭 할 때 내가 언급 한 바와 같이, 데이터 그리드를 포함하는 볼 수있는 ContentControl을로드하는 (이 폭에 남아 페이지를 원하는대로

<Page x:Class="SageWpf.Views.ShellView" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" Title="ShellView" MinHeight="450" MinWidth="800"> 

    <Grid Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Page, AncestorLevel=1}, Path=Width}"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="200"/> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 

     <Border Grid.Column="0" BorderBrush="Black" BorderThickness="2" Width="193"> 
      <StackPanel Orientation="Vertical" Width="188"> 
       <Button x:Name="ItemsScreen" FontSize="28" Height="65" Margin="1" Opacity="1">Items</Button> 
       <Button x:Name="CheckoutScreen" FontSize="28" Height="65" Margin="1" Opacity="1">Checkout</Button> 
      </StackPanel> 
     </Border> 

     <ContentControl x:Name="ActiveItem" Grid.IsSharedSizeScope="True" Grid.Column="1"></ContentControl> 
    </Grid> 
</Page> 

위).

+0

오, 예, 제가 실수로 Grid Width 바인딩을 사용하여이 문제를 해결하기위한 시도 중 하나에 남겨 두었습니다 ... 아무런 효과가 없었습니다. –

+0

이것이 100 % 맞는지는 모르겠지만 WPF 컨트롤을위한'Measure' 및'Arrange' 패스가 있음을 기억하십시오. 페이지는'Measure'를 먼저 수행하고 그리드는 나타납니다. 그러나 그리드는 부모 컨테이너 앞에'Arrange '를하고'Page'는 무한한 너비를 가지며 스스로 성장할 수 있습니다. 페이지는 그리드를 수용하기 위해 커야합니다. 나는 이처럼 일하는 것과 같은 것을 가지고 있어도 과감한 어떤 것도 의지 할 필요가 없다고 확신합니다 ... – Charleh

+0

잠시 시간을 내면 다시 올게요! – Charleh

답변

0

사용자가 창 크기를 조절할 수 있지만 컨트롤 자체는 변경할 수 없도록이 방법을 사용할 수 있습니다.

<Grid ScrollViewer.VerticalScrollBarVisibility="Auto"> 
관련 문제