2009-07-11 78 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; 

EDIT:

スケーラブルなウィンドウレイアウトのVisual Studioの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でこれを行うのですか? 私はすべてのvmsのためのスタイルを持っています。私はスケールを作りたいと思っています。 –

1

すべてをウィンドウのサイズに合わせてスケーリングしたい場合は、すべてをViewboxコントロール内に配置します。

関連する問題