0

私はWPFを学ぼうとしています..しかし、レイアウトとどれを選択するかで問題があります。ポイントはWPFのコツをつかむことなので、キャンバスを使用したくありません..

簡単なプログラム (Windows フォーム内) の 1 つを WPF に転送することにしました。

シンプルな 1 ページ フォームの写真を添付し​​ました。

ここに画像の説明を入力

4

2 に答える 2

3

フォームのレイアウトは興味深い苦境です。フォーム レイアウトでボイラープレート コードを削除するための多くの手法がありますが、それらはかなり高度な WPF コンセプトです。

最も簡単な解決策はStackPanel、セクションをレイアウトしてコントロールGrid内に配置することです。GroupBox

グリッドは 4 つの列で設定できます。

  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 を使用してフォーム レイアウトをエミュレートする方法や、基本的なレイアウト コンポーネントの他の組み合わせを使用する方法は他にもあります。

例えば:

<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それらがすべて何をするかを確認することをお勧めします。または、独自の を作成することもできます

于 2012-04-16T20:50:20.780 に答える
2

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 レイアウト

ここでは、WPF レイアウトの概要を説明します。

于 2012-04-16T20:47:07.703 に答える