私はWPFを習得しようとしていますが、レイアウトに問題があり、どちらを選択するかは問題です。全体のポイントは、WPFのこつを取得することですので、私はWPFに(Windowsフォームでの)私の簡単なプログラムの一つを譲渡することを決定したWPFのレイアウトコントロールを選択する項目
私が付属している
..キャンバスを使用したくありません単純な、1ページのフォームの画像..誰かが私はWPFでこれを複製する方法を提案することができますか?容器として
私はWPFを習得しようとしていますが、レイアウトに問題があり、どちらを選択するかは問題です。全体のポイントは、WPFのこつを取得することですので、私はWPFに(Windowsフォームでの)私の簡単なプログラムの一つを譲渡することを決定したWPFのレイアウトコントロールを選択する項目
私が付属している
..キャンバスを使用したくありません単純な、1ページのフォームの画像..誰かが私はWPFでこれを複製する方法を提案することができますか?容器として
フォームレイアウトは興味深い苦境です。それらには通常多くの定型文が含まれていますが、定型レイアウトの定型コードを削除するための多くの手法がありますが、かなり進んだWPFの概念です。
あなたのセクションを配置し、GroupBox
のコントロール内にGrid
を配置するための最も簡単なソリューションはStackPanel
です。
:
あなたのスタックパネルのリソースでは、デフォルトの視覚的な振る舞いを定義することができます。その結果、アイテムは触れなくなります。
<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でも可能です。
使用Grid、TextBlockら読み取り専用テキスト、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内のすべてのオブジェクトを置くことができます。しかし、好きな場合は、プログラムで要素を追加することができます。これは結果です:
Here WPFレイアウトの紹介です。
グリッドの2列とトップテキストボックスcolumspan = 2を作成しますか?またはあなたは1列を作って、インライン/アウトバインドメールサーバーと他の2つのオプションの2列のインナーグリッドを持っていますか? – michael
この場合、新しい列や行は追加されません。WPF(Windowsフォームとは異なります)では[マージン](http://vkreynin.wordpress.com/2008/10/05/wpf-margin-property/)を非常に重視しています要素をPanel内に配置します。 – gliderkite