Wpf-xaml-overview

提供:Dev Guides
移動先:案内検索

WPF-XAMLの概要

WPFでの作業中に最初に遭遇することの1つは、XAMLです。 XAMLはExtensible Application Markup Languageの略です。 XMLに基づいたシンプルで宣言型の言語です。

  • XAMLでは、階層関係を持つオブジェクトのプロパティの作成、初期化、および設定が非常に簡単です。
  • 主にGUIの設計に使用されますが、Workflow Foundationでワークフローを宣言するなど、他の目的にも使用できます。

基本的な構文

新しいWPFプロジェクトを作成すると、以下に示すように、MainWindow.xamlでデフォルトでXAMLコードの一部に遭遇します。

<Window x:Class = "Resources.MainWindow"
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
   Title = "MainWindow" Height = "350" Width = "525">

   <Grid>

   </Grid>

</Window>

上記のXAMLファイルには、さまざまな種類の情報が含まれています。 次の表は、各情報の役割を簡単に説明しています。

Information Description
<Window It is the opening object element or container of the root.
x:Class = "Resources.MainWindow" It is a partial class declaration which connects the markup to the partial class code defined behind.
xmlns = "http://schemas.microsoft.com/win fx/2006/xaml/presentation" Maps the default XAML namespace for WPF client/framework
xmlns:x = "http://schemas.microsoft.com/w infx/2006/xaml" XAML namespace for XAML language which maps it to x: prefix
> End of object element of the root

<Grid>

</Grid>

It is starting and closing tags of an empty grid object.
</Window> Closing the object element

XAMLの構文規則は、XMLにほぼ似ています。 XAMLドキュメントを見ると、それが実際に有効なXMLファイルであることに気付くでしょうが、XMLファイルは必ずしもXAMLファイルではありません。 これは、XMLでは属性の値が文字列である必要がある一方、XAMLでは、プロパティ要素構文として知られる別のオブジェクトになることができるためです。

  • Object要素の構文は、左山括弧(<)で始まり、その後にオブジェクトの名前が続きます。 ボタン。
  • そのオブジェクト要素のいくつかのプロパティと属性を定義します。
  • Object要素は、スラッシュ(/)に続いてすぐに右山括弧(>)が続く必要があります。

子要素のない単純なオブジェクトの例

<Button/>

いくつかの属性を持つオブジェクト要素の例

<Button Content = "Click Me" Height = "30" Width = "60"/>

プロパティを定義する代替構文の例(プロパティ要素の構文)

<Button>
   <Button.Content>Click Me</Button.Content>
   <Button.Height>30</Button.Height>
   <Button.Width>60</Button.Width>
</Button>

子要素を持つオブジェクトの例:StackPanelには子要素としてTextblockが含まれます

<StackPanel Orientation = "Horizontal">
   <TextBlock Text = "Hello"/>
</StackPanel>

WPFでXAMLを使用する理由

XAMLはWPFの最も広く知られている機能であるだけでなく、最も誤解されている機能の1つでもあります。 WPFを使用している場合は、XAMLについて聞いたことがあるはずです。ただし、XAMLに関する次の2つのあまり知られていない事実に注意してください-

  • WPFはXAMLを必要としません
  • XAMLはWPFを必要としません

実際、それらは分離可能なテクノロジーです。 それがどのようになるかを理解するために、XAMLのいくつかのプロパティでボタンが作成される簡単な例を見てみましょう。

<Window x:Class = "WPFXAMLOverview.MainWindow"
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
   Title = "MainWindow" Height = "350" Width = "604">

   <StackPanel>
      <Button x:Name = "button" Content = "Click Me" HorizontalAlignment = "Left"
         Margin = "150" VerticalAlignment = "Top" Width = "75"/>
   </StackPanel>

</Window>

WPFでXAMLを使用しないことを選択した場合、手続き型言語でも同じGUI結果を達成できます。 同じ例を見てみましょうが、今回はC#でボタンを作成します。

using System.Windows;
using System.Windows.Controls;

namespace WPFXAMLOverview {
  ///<summary>
     ///Interaction logic for MainWindow.xaml
  ///</summary>

   public partial class MainWindow : Window {

      public MainWindow() {
         InitializeComponent();

        //Create the StackPanel
         StackPanel stackPanel = new StackPanel();
         this.Content = stackPanel;

        //Create the Button
         Button button = new Button();
         button.Content = "Click Me";
         button.HorizontalAlignment = HorizontalAlignment.Left;
         button.Margin = new Thickness(150);
         button.VerticalAlignment = VerticalAlignment.Top;
         button.Width = 75;
         stackPanel.Children.Add(button);
      }
   }
}

XAMLコードまたはC#コードのいずれかをコンパイルして実行すると、以下に示すものと同じ出力が表示されます。

XAML出力

上記の例から、オブジェクトのプロパティを作成、初期化、および設定するためにXAMLでできること、コードを使用して同じタスクを実行できることは明らかです。

  • XAMLは、UI要素を設計するためのもう1つのシンプルで簡単な方法です。
  • XAMLを使用すると、UI要素を設計するためにできることが唯一の方法であるとは限りません。 XAMLでオブジェクトを宣言するか、コードを使用してオブジェクトを定義できます。
  • XAMLはオプションですが、それにもかかわらず、WPF設計の中心にあります。
  • XAMLの目標は、ビジュアルデザイナーがユーザーインターフェイス要素を直接作成できるようにすることです。
  • WPFは、マークアップからユーザーインターフェイスのすべての視覚的側面を制御できるようにすることを目的としています。