2009-07-11 9 views

답변

25

창의 크기를 조정할 때 (예 : 최대화) 창 내용이 비례 적으로 조정되어야하는 경우 Viewbox는 매우 유용합니다. 이 최소한의 페이지에서

<Window x:Class="WpfApplication1.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="300" Width="300"> 
    <Viewbox> 
     <StackPanel> 
      <TextBlock FontSize="14">Example</TextBlock> 
      <Border Background="Aqua" Width="100" Height="100"></Border>      
     </StackPanel> 
    </Viewbox> 
</Window> 

당신은 TextBlock에 수직으로 적층 된 컬러 테두리가; 이 xaml을 시작하면 창 크기는 300x300이되고, TextBlock의 글꼴 크기는 14가되고 색 테두리는 100x100이됩니다. 창 크기를 조정하면 TextBlock과 Border 크기가 적절하게 표시되므로 (xaml에서 지정한 크기 이상이 아닐 수 있으므로) 상대 비율을 유지합니다. Viewbox는 내부 컴포넌트 레이아웃이 항상 최종 해상도와 독립적으로 보이는 윈도우가 필요한 경우이 점에서 매우 유용합니다 (종횡비, 생각은 중요합니다). 이는 분명히 Viewbox 내부에 담을 내용 (예 : 동영상 및 3D보기가있는 응용 프로그램)과 함께 작동합니다. Visual Studio 2008에서는 디자이너에서 Viewbox의 내용을 볼 수 없습니다.

희망 도움말.

+0

나는 이것을 찾고있는 영원히 인터넷을 수색 해왔다. << –

0

마 창을 전체 화면으로 채우고 싶습니까? 두통을 일으키지 않고 가장 간단한 방법은 창을 최대화하는 것입니다.

w.WindowState = WindowState.Maximized; 

편집 :

확장 가능한 창 레이아웃에서는 비주얼 스튜디오의 XAML 편집기를 사용하지 않도록해야합니다! 실제로 편집기에서이 작업을 수행 할 수 있지만 매우 어렵습니다.

훨씬 쉽게

는 손으로 XAML을 쓰기 :

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition/> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
    </Grid.ColumnDefinitions> 

    <Label Grid.Column="0" Grid.Row="0">First Name</Label> 
    <TextBox Grid.Column="1" Grid.Row="0" Name="firstName">Fred</TextBox> 
    <Label Grid.Column="0" Grid.Row="1">First Name</Label> 
    <TextBox Grid.Column="1" Grid.Row="1" Name="lastName">Smith</TextBox> 
</Grid> 

이 의지 크기를 창에 맞게, 행과 열은 기본적으로 절반의 공간을 각각 얻을 것이다으로하지만, 이상하게 보일 수 있습니다. 그들이 높이 대신 그 내용에 의해 결정 그래서 당신은이를 대체 할 수 있습니다 : 그것은 또한으로, 일부 컨트롤에 여백을 넣어하는 데 도움이 될 수 있습니다

<RowDefinition Height="Auto"/> 

공간을 아웃 :

<TextBox Grid.Column="1" Grid.Row="1" Margin="6" Name="lastName">Smith</TextBox> 
+0

오, 아니, 내 문제는 그랬 으면 좋겠어 ... 콘텐츠 자체를 창 크기로 조정하고 싶습니다. –

+0

나는 편집자와 일하고 있지 않다 ... 너는 나를 이해하지 못했고, 나는 그 내용이 자라길 원했고 ... 퍼지지 않도록 ... –

+0

너는 너의 질문을 편집해야 할 것 같아. 실제로 모든 세부 사항을 확대하고 글꼴 크기를 확대하기를 원하십니까? –

2

당신이 확장하려면 정말 폰트 크기를 포함한 모든 것, 당신은 아마 당신의 콘텐트에 스케일 변환을 적용 할 수 있고 윈도우의 폭과 높이에 X와 Y 값을 묶을 수 있습니다. 그런 다음 적절한 값으로 변환하기 위해 값 변환기가 필요합니다.

+0

어떻게 mvvm에서이 작업을 수행합니까? 나는 모든 나의 VM을위한 스타일을 가지고있다 .. 저울을 만들고 싶다 .. –

1

모든 것을 창 크기로 조정하려면 모든 것을 Viewbox 컨트롤 안에 넣기 만하면됩니다.

관련 문제