الأحد، 27 أكتوبر 2019

WPF XAML



من المعتاد إنشاء برنامج "Hello World" عندما تصادف لغة برمجة جديدة لأول مرة. الكود أدناه هو مثل هذا البرنامج.



<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>    
           <TextBlock>Hello, world!</TextBlock>     
    </Grid>    
</Page>

إذا قمت بلصق XAML أعلاه في محرر Kaxaml ، واستبدال الكود الافتراضي ، سترى أن منطقة المعاينة يتم تحديثها لإظهار ما يلي:
Hello, world!

 دعونا نلقي نظرة على مختلف عناصر Hello World XAML. أول شيء نراه هو عقدة الجذر ، والتي في هذه الحالة هي عنصر الصفحة. لن نرى المزيد من عنصر الصفحة في المقالات المستقبلية في هذه السلسلة ، حيث أننا سنستخدم بشكل رئيسي العقد الجذرية للنافذة. عادةً ما يتم استخدام صفحة في تطبيقات WPF نمط التنقل ، في حين يتم استخدام نافذة للنوافذ ومربعات الحوار القياسية. في هذا المثال ، تكون علامة الصفحة مفيدة بسبب سلوك Kaxaml. إذا قمت بتغيير نص "الصفحة" إلى "نافذة" ، فسترى أنك بحاجة إلى الضغط على مفتاح قبل عرض Kaxaml.

تتضمن عقدة الجذر مساحات أسماء XML اثنين. هذه تعمل إلى حد ما مثل استخدام التوجيهات لمساحات C #. وهي تحدد المكان الذي سيبحث فيه المستند عن عناصر التحكم والعناصر الأخرى التي تضيفها إلى XAML. مساحات الاسمين المدرجة هي تلك الافتراضية التي توفر عناصر WPF القياسية. يمكنك أيضًا الرجوع إلى مساحات الأسماء الخاصة بك باستخدام بناء جملة مماثل. لاحظ أن أحد مساحات الأسماء له اسم مستعار ، "x". عند استخدام عناصر من مساحة الاسم هذه ، سترى أننا بحاجة إلى تضمين x في تعريفات العنصر.

يعرّف عنصر الشبكة شبكة ، والتي هي عنصر تحكم تخطيط قياسي في WPF. تحدد الشبكات الأعمدة والصفوف التي تتقاطع لتكوين خلايا. يمكن إضافة عناصر التحكم إلى هذه الخلايا لإعطاء تنظيم مرئي ممتع. في مثال Hello World ، لم يتم تضمين أي أعمدة أو صفوف حتى يكون للشبكة خلية واحدة فقط.

العنصر الأخير في المثال هو TextBlock. هذا يحتوي على مقدار صغير من النص الذي يمكن أن يتضمن بعض التنسيقات. قمت بتعريف النص بين علامتي الفتح والإغلاق لعنصر XML في هذه الحالة.

بعد TextBlock هناك بعض العلامات الختامية. هذه تضمن أن XML تم تشكيله بشكل جيد. إذا لم يكن كذلك ، فلن يعمل البرنامج.

مثال اخر  

على سبيل المثال ، خذ بعين الاعتبار XAML التالي. لن أصفها بالتفصيل ، حيث سنرى هذا الرمز في المقالات المستقبلية. الاختلافات بين هذا والمثال السابق هي إضافة تعريفات للصف والعمود وإدراج بعض عناصر التحكم الإضافية. لاحظ عنصر StackPanel. هذا هو عنصر تحكم تخطيط آخر. بدلاً من إظهار العناصر في الشبكة ، يتحكم المكدس عموديًا أو أفقيًا.
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100"/>
            <ColumnDefinition Width="200"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="auto"/>
            <RowDefinition Height="auto"/>
            <RowDefinition Height="auto"/>
            <RowDefinition Height="auto"/>
            <RowDefinition Height="auto"/>
        </Grid.RowDefinitions>
        <TextBlock Text="Forename"/>
        <TextBlock Grid.Row="1" Text="Surname"/>
        <TextBlock Grid.Row="2" Text="Age"/>
        <TextBlock Grid.Row="3" Text="Sex"/>
        <TextBox Grid.Column="1" Text="Bob"/>
        <TextBox Grid.Column="1" Grid.Row="1" Text="Smith"/>
        <TextBox Width="80" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Left"
                 Text="40"/>
        <StackPanel Grid.Column="1" Grid.Row="3" Orientation="Horizontal">
            <RadioButton Content="Male"/>
            <RadioButton Content="Female"/>
        </StackPanel>
    </Grid>
</Page>
 نتيجة الكود السابق

التنسيقات 

أحد الأسباب التي تجعل الأشخاص تحب WPF هي قدرته على إضافة التصميم إلى عناصر التحكم بطرق يصعب تحقيقها في Windows Forms. في الكود أدناه أضفت بعض التصميم الأساسي باستخدام خصائص عناصر التحكم المختلفة. يتم تعيين الخصائص باستخدام سمات XML. لقد أضفت هوامش إلى مربعات النص ، والمحاذاة العمودية إلى كتل النص والألوان إلى أزرار الاختيار.
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100"/>
            <ColumnDefinition Width="200"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="auto"/>
            <RowDefinition Height="auto"/>
            <RowDefinition Height="auto"/>
            <RowDefinition Height="auto"/>
            <RowDefinition Height="auto"/>
        </Grid.RowDefinitions>
        <TextBlock Text="Forename" VerticalAlignment="Center"/>
        <TextBlock Grid.Row="1" Text="Surname" VerticalAlignment="Center"/>
        <TextBlock Grid.Row="2" Text="Age" VerticalAlignment="Center"/>
        <TextBlock Grid.Row="3" Text="Sex" VerticalAlignment="Center"/>
        <TextBox Grid.Column="1" Text="Bob" Margin="5"/>
        <TextBox Grid.Column="1" Grid.Row="1" Text="Smith" Margin="5"/>
        <TextBox Width="80" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Left"
                 Text="40" Margin="5"/>
        <StackPanel Grid.Column="1" Grid.Row="3" Orientation="Horizontal" Margin="5">
            <RadioButton Content="Male" Foreground="Blue" Margin="0 0 10 0"/>
            <RadioButton Content="Female" Foreground="DeepPink"/>
        </StackPanel>
    </Grid>
</Page>
 النتيجة


ليست هناك تعليقات:

اضافة تعليق

جميع الحقوق محفوظة © 2019 الحقيبة البرمجية لمبرمجى VB.NET