Silverlight - ภาพรวม XAML

สิ่งแรกที่คุณจะพบเมื่อทำงานกับ Silverlight คือ XAML XAML ย่อมาจาก Extensible Application Markup Language เป็นภาษาที่เรียบง่ายและเปิดเผยตาม XML

  • ใน XAML เป็นเรื่องง่ายมากที่จะสร้างเริ่มต้นและตั้งค่าคุณสมบัติของวัตถุที่มีความสัมพันธ์ตามลำดับชั้น

  • ส่วนใหญ่จะใช้สำหรับการออกแบบ GUI

  • สามารถใช้เพื่อวัตถุประสงค์อื่น ๆ เช่นเพื่อประกาศเวิร์กโฟลว์ใน Workflow Foundation

ไวยากรณ์พื้นฐาน

เมื่อคุณสร้างโครงการ Silverlight ใหม่คุณจะเห็นโค้ด XAML บางส่วนตามค่าเริ่มต้นใน MainPage.xaml ดังแสดงด้านล่าง

<UserControl x:Class = "FirstExample.MainPage" 
   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" 
   mc:Ignorable = "d" 
   d:DesignHeight = "300" d:DesignWidth = "400"> 
	
   <Grid x:Name = "LayoutRoot" Background = "White"> 
         
   </Grid> 
	
</UserControl>

คุณจะเห็นว่าไฟล์ XAML ที่ระบุข้างต้นกล่าวถึงข้อมูลประเภทต่างๆ ทั้งหมดนี้มีคำอธิบายสั้น ๆ ในตารางด้านล่าง

ข้อมูล คำอธิบาย
<UserControl จัดเตรียมคลาสพื้นฐานสำหรับการกำหนดคอนโทรลใหม่ที่ห่อหุ้มคอนโทรลที่มีอยู่และจัดเตรียมตรรกะของตัวเอง
x: Class = "FirstExample.MainPage" เป็นการประกาศคลาสบางส่วนซึ่งเชื่อมต่อมาร์กอัปกับโค้ดคลาสบางส่วนที่อยู่เบื้องหลังซึ่งกำหนดไว้ในนั้น
xmlns = "http://schemas.microsoft.com / winfx / 2006 / xaml / การนำเสนอ" แมปเนมสเปซ XAML เริ่มต้นสำหรับไคลเอนต์ / เฟรมเวิร์ก Silverlight
xmlns: x = "http: //schemas.microsoft.c om / winfx / 2006 / xaml" XAML namespace สำหรับภาษา XAML ซึ่งแมปกับ x: คำนำหน้า
xmlns: d = "http://schemas.microsoft.com / expression / blend / 2008" XAML namespace มีไว้สำหรับการสนับสนุนนักออกแบบโดยเฉพาะการสนับสนุนนักออกแบบในพื้นผิวการออกแบบ XAML ของ Microsoft Visual Studio และ Microsoft Expression Blend
xmlns: mc = "http: //schemas.openxmlforma ts.org/markup-compatibility/2006" ระบุและสนับสนุนโหมดความเข้ากันได้ของมาร์กอัปสำหรับการอ่าน XAML
> จุดสิ้นสุดขององค์ประกอบวัตถุของราก
<ตาราง> </Grid> นี่คือแท็กเริ่มต้นและปิดของออบเจ็กต์กริดว่าง
</UserControl> การปิดองค์ประกอบวัตถุ

กฎไวยากรณ์สำหรับ XAML เกือบจะคล้ายกับ XML หากคุณดูเอกสาร XAML คุณจะสังเกตเห็นว่าจริงๆแล้วมันเป็นไฟล์ XML ที่ถูกต้อง ในทางกลับกันมันไม่เป็นความจริงเนื่องจากใน XML ค่าของแอตทริบิวต์ต้องเป็นสตริงในขณะที่อยู่ใน XAML อาจเป็นวัตถุอื่นซึ่งเรียกว่าไวยากรณ์องค์ประกอบคุณสมบัติ

  • ไวยากรณ์ขององค์ประกอบวัตถุเริ่มต้นด้วยวงเล็บมุมซ้าย (<) ตามด้วยชื่อของวัตถุเช่นปุ่ม

  • คุณสมบัติและคุณลักษณะขององค์ประกอบวัตถุนั้นถูกกำหนด

  • องค์ประกอบวัตถุต้องปิดด้วยเครื่องหมายทับ (/) ตามด้วยวงเล็บมุมฉาก (>) ทันที

ตัวอย่างของวัตถุธรรมดาที่ไม่มีองค์ประกอบลูกแสดงอยู่ด้านล่าง

<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/>

ทำไม XAML ใน Silverlight

XAML ไม่ได้ถูกคิดค้นขึ้นมาสำหรับ Silverlight มาจาก WPF ซึ่งเป็น Windows Presentation Foundation Silverlight มักถูกอธิบายว่าเป็นส่วนย่อยของ WPF สิ่งนี้ไม่เป็นความจริงอย่างเคร่งครัดเนื่องจาก Silverlight สามารถทำบางสิ่งที่ WPF ทำไม่ได้ แม้ว่าฟังก์ชันการทำงานจะทับซ้อนกัน แต่ทั้งสองก็มีรายละเอียดที่แตกต่างกันเล็กน้อย

  • มีความถูกต้องมากขึ้นที่จะบอกว่า WPF และ Silverlight มีความคล้ายคลึงกันมากในหลายประการ แม้จะมีความแตกต่างกัน แต่ก็ยังคงเป็นข้อมูลที่ให้ข้อมูลเกี่ยวกับคุณลักษณะ XAML ที่ Silverlight ยืมมาจาก WPF ตัวอย่างเช่น Silverlight นำเสนอกราฟิกเบื้องต้นสำหรับบิตแมปและรูปร่างที่ปรับขนาดได้

  • นอกจากนี้ยังมีองค์ประกอบสำหรับการแสดงภาพและเสียง

  • มีการรองรับข้อความที่จัดรูปแบบเรียบง่ายและคุณสามารถทำให้องค์ประกอบใด ๆ เคลื่อนไหวได้ หากคุณรู้จัก WPF ชุดคุณลักษณะนี้จะคุ้นเคยกับคุณ

  • จุดสำคัญประการหนึ่งคุณไม่สามารถใช้ WPF XAML และใช้ใน Silverlight ได้

  • แม้ว่าจะมีความคล้ายคลึงกัน แต่คุณจะพบความแตกต่างเล็ก ๆ น้อย ๆ มากมาย

XAML และรหัสด้านหลัง

XAML กำหนดลักษณะและโครงสร้างของอินเทอร์เฟซผู้ใช้ อย่างไรก็ตามหากคุณต้องการให้แอปพลิเคชันของคุณทำสิ่งที่เป็นประโยชน์เมื่อผู้ใช้โต้ตอบคุณจะต้องมีรหัส

  • ไฟล์ XAML แต่ละไฟล์มักจะเชื่อมโยงกับไฟล์ซอร์สโค้ดซึ่งเราอ้างถึงเป็นโค้ดที่อยู่เบื้องหลัง Microsoft Frameworks ต่างๆใช้คำนี้

  • โดยทั่วไปโค้ดที่อยู่เบื้องหลังจะต้องใช้องค์ประกอบที่กำหนดไว้ใน XAML เพื่อดึงข้อมูลเกี่ยวกับอินพุตของผู้ใช้หรือเพื่อแสดงข้อมูลให้กับผู้ใช้

  • ในรหัส XAML ที่ระบุด้านล่าง TextBlock และ Buttonมีการกำหนด ตามค่าเริ่มต้นเมื่อเรียกใช้แอปพลิเคชันแอปพลิเคชันจะแสดงข้อความ“Hello World!” บนหน้าเว็บและปุ่ม

<UserControl x:Class = "FirstExample.MainPage" 
   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" 
   mc:Ignorable = "d" 
   d:DesignHeight = "300" d:DesignWidth = "400">
   
   <Grid x:Name = "LayoutRoot" Background = "White"> 
      <StackPanel> 
         <TextBlock x:Name = "TextMessage"  
            Text = "Hello World!"  
            Margin = "5"> 
         </TextBlock> 
			
         <Button x:Name = "ClickMe"  
            Click = "ClickMe_Click"  
            Content = "Click Me!"  
            Margin = "5"> 
         </Button> 
			
      </StackPanel> 
   </Grid> 
</UserControl>
  • โค้ดที่อยู่เบื้องหลังสามารถเข้าถึงองค์ประกอบใด ๆ ที่มีชื่อด้วย x:Name คำสั่ง

  • องค์ประกอบที่ตั้งชื่อจะพร้อมใช้งานผ่านฟิลด์ในโค้ดด้านหลังทำให้โค้ดสามารถเข้าถึงอ็อบเจ็กต์เหล่านี้และสมาชิกได้ตามปกติ

  • x:Prefix แสดงว่าชื่อไม่ใช่คุณสมบัติปกติ

  • x:Name เป็นสัญญาณพิเศษไปยังคอมไพเลอร์ XAML ที่เราต้องการเข้าถึงวัตถุนี้ในโค้ดที่อยู่เบื้องหลัง

ให้ด้านล่างนี้คือการใช้งานเหตุการณ์คลิกปุ่มซึ่ง TextBlock อัปเดตข้อความแล้ว

using System.Windows; 
using System.Windows.Controls;
  
namespace FirstExample {
 
   public partial class MainPage : UserControl {
	
      public MainPage() { 
         InitializeComponent(); 
      }
		
      private void ClickMe_Click(object sender, RoutedEventArgs e) { 
         TextMessage.Text = "Congratulations! you have created your first Silverlight Applicatoin"; 
      } 
   } 
}
  • XAML ไม่ใช่วิธีเดียวในการออกแบบองค์ประกอบ UI ขึ้นอยู่กับคุณที่จะประกาศอ็อบเจ็กต์ใน XAML หรือประกาศ / เขียนโค้ด

  • XAML เป็นทางเลือก แต่อย่างไรก็ตามสิ่งนี้ก็เป็นหัวใจของ Silverlight ออกแบบ.

  • เป้าหมายของการเข้ารหัส XAML คือการช่วยให้นักออกแบบภาพสามารถสร้างองค์ประกอบส่วนติดต่อผู้ใช้ได้โดยตรง ดังนั้น,Silverlight มีจุดมุ่งหมายเพื่อให้สามารถควบคุมลักษณะภาพทั้งหมดของอินเทอร์เฟซผู้ใช้จากการมาร์กอัป