私はWPFを学ぼうとしています..しかし、レイアウトとどれを選択するかで問題があります。ポイントはWPFのコツをつかむことなので、キャンバスを使用したくありません..
簡単なプログラム (Windows フォーム内) の 1 つを WPF に転送することにしました。
シンプルな 1 ページ フォームの写真を添付しました。
私はWPFを学ぼうとしています..しかし、レイアウトとどれを選択するかで問題があります。ポイントはWPFのコツをつかむことなので、キャンバスを使用したくありません..
簡単なプログラム (Windows フォーム内) の 1 つを WPF に転送することにしました。
シンプルな 1 ページ フォームの写真を添付しました。
フォームのレイアウトは興味深い苦境です。フォーム レイアウトでボイラープレート コードを削除するための多くの手法がありますが、それらはかなり高度な WPF コンセプトです。
最も簡単な解決策はStackPanel
、セクションをレイアウトしてコントロールGrid
内に配置することです。GroupBox
グリッドは 4 つの列で設定できます。
スタック パネルのリソースでグローバル スタイルを使用すると、デフォルトの視覚的動作を定義して、アイテムが接触しないようにすることができます。
<Style TargetType="TextBox">
<Setter Property="Margin" "0,0,5,5" />
</Style>
TextBox
上記のスタイルは、ビジュアル ツリーでその下にあるすべてのコントロールの右と下に 5 ピクセルのマージンを置きます。
これは、WPF でこの ui を作成するための絶対的に最も単純な (読み: 簡単な) アプローチです。これは決して最高でも、最もメンテナンスしやすいものでもありませんが、最大で約 10 分で実行できるはずです。
このようなWPF を使用してフォーム レイアウトをエミュレートする方法や、基本的なレイアウト コンポーネントの他の組み合わせを使用する方法は他にもあります。
例えば:
<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>
さまざまなアプローチにはさまざまな欠点があり、フレックス幅があるものもあれば、そうでないものもあれば、列でうまく機能するものもあれば、そうでないものもあります。の多くのサブクラスを試して、Panel
それらがすべて何をするかを確認することをお勧めします。または、独自の を作成することもできます。
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に配置できます。ただし、必要に応じて、要素をプログラムで追加できます。結果は次のとおりです。
ここでは、WPF レイアウトの概要を説明します。