2012-04-16 19 views
0

私はWPFを習得しようとしていますが、レイアウトに問題があり、どちらを選択するかは問題です。全体のポイントは、WPFのこつを取得することですので、私はWPFに(Windowsフォームでの)私の簡単なプログラムの一つを譲渡することを決定したWPFのレイアウトコントロールを選択する項目

私が付属している

..キャンバスを使用したくありません単純な、1ページのフォームの画像..誰かが私はWPFでこれを複製する方法を提案することができますか?容器として

enter image description here

答えて

2

フォームレイアウトは興味深い苦境です。それらには通常多くの定型文が含まれていますが、定型レイアウトの定型コードを削除するための多くの手法がありますが、かなり進んだWPFの概念です。

あなたのセクションを配置し、GroupBoxのコントロール内にGridを配置するための最も簡単なソリューションはStackPanelです。

グリッドは4 colunmsで設定することができ

  1. コル1ラベル
  2. コルグローバルスタイルで1つのボディ
  3. コル2ラベル
  4. コル2ボディ

あなたのスタックパネルのリソースでは、デフォルトの視覚的な振る舞いを定義することができます。その結果、アイテムは触れなくなります。

<Style TargetType="TextBox"> 
    <Setter Property="Margin" "0,0,5,5" /> 
</Style> 

上のスタイルは、右の&下のすべてのTextBoxの下のコントロールに5ピクセルの余白を付けます。

これは、WPFでこのUIを作成するための絶対的な単純な方法です。それは決して最善のものではなく、最も保守的なものではありませんが、最大約10分で実行可能でなければなりません。

フォームレイアウトをWPF like this oneでエミュレートする方法や、その他の基本レイアウトコンポーネントの組み合わせを使用する方法があります。例えば

<StackPanel> 
    <!-- Vertical Stack Panel, Stacks Elements on top of each other --> 
    <StackPanel Orientation="Horizontal"> 
    <!-- Horizontal Stack Panel, Stacks Elements left to right --> 
    <Label Width="100">This Label is 100units Wide</Label> 
    <TextBox /> 
    </StackPanel> 
</StackPanel> 

異なるアプローチが異なる欠点を持っている、いくつかはフレックス幅あり、一部ではない、colunmsとうまく遊び、一部にはありません。私はPanelの多くのサブクラスを試してみて、彼らが何をしているかを見てみることをお勧めします。また、roll your ownでも可能です。

2

使用GridTextBlockら読み取り専用テキスト、Textboxとして編集可能なテキストとButton。これらの要素と(例えば)を使用して

XAML:

<Window 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
x:Class="MainWindow" 
Width="640" Height="480" Background="White"> 

<Grid> 
    <TextBlock HorizontalAlignment="Left" Height="20" Margin="34,30,0,0" 
     TextWrapping="Wrap" Text="Connection String" VerticalAlignment="Top" 
     Width="107" Foreground="Black"/> 

    <TextBox HorizontalAlignment="Left" Height="18" Margin="170,32,0,0" 
     TextWrapping="Wrap" VerticalAlignment="Top" Width="379"/> 

    <Button Content="Save" HorizontalAlignment="Left" Height="26" 
     Margin="529,387,0,0" VerticalAlignment="Top" Width="69"/>   
</Grid> 

はあなたWindow内のすべてのオブジェクトを置くことができます。しかし、好きな場合は、プログラムで要素を追加することができます。これは結果です: WPF layout

Here WPFレイアウトの紹介です。

+0

グリッドの2列とトップテキストボックスcolumspan = 2を作成しますか?またはあなたは1列を作って、インライン/アウトバインドメールサーバーと他の2つのオプションの2列のインナーグリッドを持っていますか? – michael

+0

この場合、新しい列や行は追加されません。WPF(Windowsフォームとは異なります)では[マージン](http://vkreynin.wordpress.com/2008/10/05/wpf-margin-property/)を非常に重視しています要素をPanel内に配置します。 – gliderkite

関連する問題