![]() |
|
دروس xaml و wpf في بريزم - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي الأخرى (https://delphi4arab.net/forum/forumdisplay.php?fid=4) +--- قسم : برمجة الويب بدلفي وDelphi .NET و Oxygen (https://delphi4arab.net/forum/forumdisplay.php?fid=29) +--- الموضوع : دروس xaml و wpf في بريزم (/showthread.php?tid=2268) |
دروس xaml و wpf في بريزم - زكيري عبدالعالي - 24-06-2011 النتيجة [attachment=91420:image006.png] استخدام Grid: يعتبر هذا اللوح من افضل الألواح على الأطلاق ويمكننا بواسطته عمل كل شئ يقوم به اي لوح آخر(تقريباً). يقوم هذا اللوح بتقسيم المساحة المعطاة له إلى صفوف واعمدة غير مرئية ، ويمكن وضع العناصر داخل الخلايا (الناتجة من تقاطع الصف مع العمود) . والجميل هنا انه يمكن وضع اكثر من عنصر في نفس الخلية، وبشكل افتراضي كل Grid يتكون من صف واحد وعمود واحد ، ما يعني بانه يتكون من خلية واحدة بشكل افتراضي. من اجل اضافة الصفوف و الأعمدة إلى Grid ، فإن علينا استخدام الخاصيتين Grid.RowDefinitions و Grid.ColumnDefinitions ، فلو اردنا اضافة صفين وثلاثة اعمدة فإننا نستخدم: كود : <Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
</Grid>ملاحظة: لاحظ انه يجب استخدام العنصر Grid.RowDefinitions ، والعنصر Grid.ColumnDefinitions من اجل تحديد الصفوف والأعمدة المطلوبة. تسمى هذه الصيغة في Xaml بـ "صيغة العنصر الخاصية" (Property Element Syntax) وهي طريقة اخرى لتعيين الخصائص في الكائن إلى جانب "صيغة الواصفة" (Attribute Syntax) . بعد ذلك يمكننا إضافة العناصر إلى Grid وتحديد الصف والعمود الذي يقع فيه كل عنصر عن طريق الخصائص المرفقة Grid.Row و Grid.Column: كود : <Grid>
………
<Button Grid.Row="0" Grid.Column="0">Top Left</Button>
<Button Grid.Row="0" Grid.Column="1">Middle Left</Button>
<Button Grid.Row="1" Grid.Column="2">Bottom Right</Button>
<Button Grid.Row="1" Grid.Column="1">Bottom Middle</Button>
………
</Grid>إذا لم نقم بتحديد الصف او العمود لعنصر معين فإن هذا العنصر يتم وضعه في الصف الأول والعمود الأول ، بسبب ان القيمة الأفتراضية للخصائص المرفقة Grid.Row و Grid.Column هي صفر(بمعنى الأول). [attachment=91421:image007.png] حجم الأعمدة والصفوف: تقدم Grid ثلاث طرق لتحديد ارتفاع الصف وعرض الأعمدة: - الحجم المطلق (Absolute size): حيث يتم تعيين رقم يمثل عدد الوحدات التي يشغلها العرض او الأرتفاع كود : <ColumnDefinition Width="100"/>كود : <ColumnDefinition Width="Auto"/>كود : <ColumnDefinition Width="*"/>وبشكل افتراضي، يكون التناسب متساويا ما لم نقم بإضافة رقم معين يسبق النجمة مثل: كود : <RowDefinition Height="*"/>
<RowDefinition Height="2*"/>عمل مربع الحوار السابق باستخدام Grid: باستخدام هذه الطرق في التحجيم فإنه يمكننا استخدام Grid من اجل إنشاء نفس مربع الحوار السابق على النحو التالي : كود : <Grid ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<TextBox Margin="10" Grid.Row="0">This is a test.</TextBox>
<StackPanel Grid.Row="1" HorizontalAlignment="Right" Orientation="Horizontal">
<Button Margin="10,10,2,10" Padding="3">OK</Button>
<Button Margin="2,10,10,10" Padding="3">Cancel</Button>
</StackPanel>
</Grid>الخاصية ShowGridLines: يمكن عرض خطوط الشبكة في Grid بتعيين هذه الخاصية إلى True (كما يظهر في المثال السابق). الخصائص المرفقة Grid.RowSpan و Grid.ColumnSpan يمكننا ان نجعل العنصر يشغل اكثر من صف واحد او عمود واحد من خلال الخصائص Grid.RowSpan و Grid.ColumnSpan، فعلى سبيل المثال لو اردنا ان يكون الزر في الصف الأول والعمود الأول ويشغل صفين وعمودين فإننا نكتب : كود : <Button Grid.Row="0" Grid.Column="0" Grid.RowSpan="2" Grid.ColumnSpan="2">Span Button</Button>تقسيم النوافذ باستخدام GridSplitter باستخدام GridSplitter يمكننا ان نجعل المستخدم قادرا على تغيير عرض العمود او ارتفاع الصف بنفس الطريقة التي تظهر في نوافذ مثل Windows Explorer حيث يكون بالأمكان تغيير عرض قائمة المجلدات عن طريق سحب حافتها في الأتجاه المطلوب. [attachment=91422:image009.png] إضافة GridSplitter إلى Grid عملية سهلة رغم ان الطريقة غريبة بعض الشئ، ومن الجيد ان نتذكر التالي: - يجب وضع GridSplitter داخل خلية في Grid ، هذه الخلية يمكن ان تحتوي على عناصر اخرى وفي هذه الحالة يجب ان نتأكد من هذه العناصر لا تقوم بإخفاء GridSplitter (بمعنى تغطيه) عن طريق تعيين الهوامش (Margin). والأفضل ان نقوم بعمل عمود او صف مخصص لـ GridSplitter - لا يقوم GridSplitter بتعديل حجم الخلية فقط انما يقوم بتعديل حجم الصف او العمود بالكامل، ولكي نجعل هذا السلوك ينسجم مع المظهر في UI فإن علينا ان نجعل GridSplitter يمتد على طول الصف او العمود المطلوب باستخدام الخصائص Grid.RowSpan و Grid.ColumnSpan. - مبدأيا يكون GridSplitter غير مرئيا ، ومن اجل ان نجعله مرئيا فلا بد من اعطائه حجم معين ينسجم مع الأتجاه الذي يعمل عليه. عن طريق اعطائه عرض معين (مع الأعمدة) او طول معين (مع الصفوف). - تحدد محاذاة GridSplitter طريقة عمله ، بمعنى هل سيعمل كمقسم افقي (لتغيير حجم الصفوف) او كمقسم رأسي (لتغيير حجم الأعمدة) ، فمن اجل ان يعمل كمقسم افقي فإنه يجب تعيين الخاصية VerticalAlignment إلى Center بحيث يتم تغيير حجم الصف في الأعلى والصف في الأسفل. ومن اجل ان يعمل كمقسم رأسي فإنه يجب تعيين الخاصية HorizontalAlignment إلى Center بحيث يتم تغيير حجم العمود في اليسار والعمود في اليمين. (يمكن ايضاً استخدام الخصائص ResizeDirection و ResizeBehavior في GridSplitter من اجل تحديد السلوك المطلوب) المثال التالي يوضح كيفية عمل مقسم رأسي لتغيير حجم الأعمدة : كود : <Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition MinWidth="100"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition MinWidth="50"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0" Margin="3">Left</Button>
<Button Grid.Row="0" Grid.Column="2" Margin="3">Right</Button>
<Button Grid.Row="1" Grid.Column="0" Margin="3">Left</Button>
<Button Grid.Row="1" Grid.Column="2" Margin="3">Right</Button>
<GridSplitter Grid.Row="0" Grid.Column="1" Grid.RowSpan="2"
Width="3" VerticalAlignment="Stretch" HorizontalAlignment="Center"
ShowsPreview="False"></GridSplitter>
</Grid>الخاصية ShowsPreview : تكون قيمة الخاصية ShowsPreview في GridSplitter هي False بشكل افتراضي ، مايعني ان GridSplitter سوف يقوم بتغيير حجم العمود او الصف مباشرة خلال عملية السحب، وعند تغيير هذه الخاصية إلى True فإن GridSplitter سوف يسمح للمستخدم ان يقوم بمعاينة الحجم المحدد اولا وعند تحرير زر الماوس فإن الحجم الجديد يتم تطبيقه. دروس xaml و wpf في بريزم - زكيري عبدالعالي - 24-06-2011 بعد كل هذا ستقول لم افهم شئ ياعبد العالي اقول نعم لانك لم تبدا في xaml ستقول كيف ابدأ الطريقة التي ساتلعها ان شاء الله هي المقارنة بين الدلفي و البريسم و السي في نفس الوقت . حسنا اترك المعلموات التى قراتها سايقا و ابدا معي من تحت الصفر ====================================== 1- انشاء اول مشروع في wpf عرض نافذة فقط نعم سهلة في نفس الوقت انشاء نفس المشروع بنفس التسميات في الدلفي العادي لاحظ الصورة التالية و اكتب مشروعيك . دروس xaml و wpf في بريزم - زكيري عبدالعالي - 24-06-2011 كود : http://www.bloghotel.org/uploads/zekiriabd_Delphi_TO_Prism.jpgدروس xaml و wpf في بريزم - زكيري عبدالعالي - 25-06-2011 السلام عليكم اليوم ايضا سنقوم بالمقارنة بين ملف الواجهة DFM و ملف الواجهة XAML لقد قمت بانشاء نافذه بيبطة تحتوي على عدة مكونات DELPHI و قمت بنفس الشئ في PRISM لاخض الصورة اولا بالدلفي كود : object MyClassForm: TMyClassForm
Left = 50
Top = 50
Caption = 'MyForm'
ClientHeight = 255
ClientWidth = 445
Color = '$00FFFFF0'
Font.Name = 'Tahoma'
Font.Style = [fsItalic]اما بريسم XAML كود : <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Left="50"
Top="50"
Title="MyForm"
Height="255"
Width="445"
Background="#00FFFFF0"
FontFamily="Tahoma"
FontStyle="Italic"
FontSize="11"
>هل ما زلت خاءف من البريسم او من WPF اي XAML اظر الان الى الكوين التالي دلفي كود : object Label1: TLabel
Left = 8
Top = 35
Width = 31
Height = 13
Caption = 'Label1'
endكود : <Label
Content="Label"
Height="28"
Margin="6,6,0,0"
Name="label1"
/>كود : object ListView1: TListView
Left = 6
Top = 8
Width = 154
Height = 129
Columns =
<
item Caption = '1' Width = 50 end
item Caption = '2' Width = 50 end
item Caption = '3' Width = 50 end
>
ViewStyle = vsReport
endكود : <ListView Name="listView1"
Margin="6,6,0,0"
Height="130"
Width="159"
>
<ListView.View>
<GridView>
<GridViewColumn Header="1" Width="50" />
<GridViewColumn Header="2" Width="50" />
<GridViewColumn Header="3" Width="50" />
</GridView>
</ListView.View>
</ListView>دروس xaml و wpf في بريزم - زكيري عبدالعالي - 25-06-2011 السلام عليكم اليوم ايضا سنقوم بالمقارنة بين ملف الواجهة DFM و ملف الواجهة XAML لقد قمت بانشاء نافذه بيبطة تحتوي على عدة مكونات DELPHI و قمت بنفس الشئ في PRISM لاخض الصورة اولا بالدلفي كود : object MyClassForm: TMyClassForm
Left = 50
Top = 50
Caption = 'MyForm'
ClientHeight = 255
ClientWidth = 445
Color = '$00FFFFF0'
Font.Name = 'Tahoma'
Font.Style = [fsItalic]اما بريسم XAML كود : <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Left="50"
Top="50"
Title="MyForm"
Height="255"
Width="445"
Background="#00FFFFF0"
FontFamily="Tahoma"
FontStyle="Italic"
FontSize="11"
>هل ما زلت خاءف من البريسم او من WPF اي XAML اظر الان الى الكوين التالي دلفي كود : object Label1: TLabel
Left = 8
Top = 35
Width = 31
Height = 13
Caption = 'Label1'
endكود : <Label
Content="Label"
Height="28"
Margin="6,6,0,0"
Name="label1"
/>كود : object ListView1: TListView
Left = 6
Top = 8
Width = 154
Height = 129
Columns =
<
item Caption = '1' Width = 50 end
item Caption = '2' Width = 50 end
item Caption = '3' Width = 50 end
>
ViewStyle = vsReport
endكود : <ListView Name="listView1"
Margin="6,6,0,0"
Height="130"
Width="159"
>
<ListView.View>
<GridView>
<GridViewColumn Header="1" Width="50" />
<GridViewColumn Header="2" Width="50" />
<GridViewColumn Header="3" Width="50" />
</GridView>
</ListView.View>
</ListView>و الان ستقول مادام WPF مثل VCL لاداعي منه لاني اجيد VCL و الاثنين يعطو نفس النتيجة الى انك ستتمتع اكثر في WPf حيث ستجد امور كثيرة لا تستطيع فعلها با VCL و من بين هذه الامور ادراج Styling and Templating على واجهتك و هي مايشبه CSS في صفحات ASPX. الطريقة سهلة 1-اضافة ملف انماط الى المشروع من نوع Resource Dictionary باسم "Style.css.xaml" 2- ربط المشروع بهذا الملف مما يسهل لكل فورم الوصول الى الانماط الموجودة فيه كيف نكتب في XAML المشروع الاسطر التالية كود : <Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
StartupUri="MyWindow.xaml"
>
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Style.css.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>3- ننشا نمط باسم مفتاح "StyleForms" مثلا و نكتل فيه بعض الامور التي تغير لنا اللون و الشكل لمكونا ما مثلا النافة نغير لونها و نغير حجمها الخ كود : <Style x:Key="StyleForms">
<!--تلوين النافدة بالاحمر-->
<Setter
Property="Border.Background" Value="RED">
</Setter>
<!--تلوين متدرج للنافدة بالاحمر و الابيض -->
<Setter Property="StackPanel.Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="WhiteSmoke" Offset="0.1" />
<GradientStop Color="RED" Offset="1" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>4- و اخيرا ربط النافدة مع مفتاح النمط StyleForms في XAML للنافذة نضيف تعليمة الربط و هي كود : <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Style="{DynamicResource StyleForms}"
>
</Window>****ا ان اجد اعضاء يجربون كل ما اكتب شكرا في المرفات مثال دروس xaml و wpf في بريزم - زكيري عبدالعالي - 25-06-2011 المرفق عن مثال الانماط في wpf دروس xaml و wpf في بريزم - زكيري عبدالعالي - 26-06-2011 أدوات WPF اضافة للادوات التقليدية ، توفر لك wpf مجموعة من الأدوات الجديدة ، أو تغير من مظهرها وخياراتها من أجل استخدامك لها. أولاً : مجموعة الأدوات التقليدية مجموعة الادوات المعتادة التي تضمLable, Button وباقي الأدوات العادية ، فقط تتمتع ببعض الخصائص الإضافية لتجميل وتحسين المظهر . ثانياً : أدوات الفورم مثل القوائم واشرطة التمرير وخلافه ثالثاً : أدوات الmedia مثل أدوات الصوت والصورة والفيديو وخلافه. رابعاً : أدوات المظهر تضم بعض الادوات الاساسية مثل الوأخرى Panel وال Groupbox و الان سنتعرف على كيفية ادراج StringFormat في XAML و ربط مكونين مع بعضهما البعض في الصورة المثال اذن لتحديد شكل النص في XAML نكتب في خصاءص المكون كود : Text="{Binding الربط, StringFormat={}{الشكل}}"كود : DataContext = "{Binding ElementName=المكون الاخر}"الكود كامل كود : <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Height="153"
Width="323"
>
<Grid Style="{DynamicResource StyleForms}" >
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="25"/>
<RowDefinition Height="22"/>
<RowDefinition Height="25"/>
</Grid.RowDefinitions>
<Slider Name="slider1"
Grid.Row="0"
Height="25"
Width="200"
/>
<Label Name="label1"
Grid.Row="1"
Width="100"
DataContext = "{Binding ElementName=slider1}"
Content ="{Binding Path=Value}"
/>
<DatePicker
Grid.Row="2"
Height="25"
HorizontalAlignment="Left"
Name="datePicker1"
Width="160"
/>
<TextBox
Grid.Row="3"
DataContext = "{Binding ElementName=datePicker1}"
Text="{Binding Path=DisplayDate, StringFormat={}{0:dddd MMMM yyyy}}"
Width="300"
/>
</Grid>
</Window>تلاحض انك عندما تغير موضع slider1 تتغر فيمة label و تغيير التاريخ يتغير التاريخ في textbox شكرا دروس xaml و wpf في بريزم - زكيري عبدالعالي - 27-06-2011 الان سنتعلم كيف نغير في خصاءص مكون بسهولة ففي الدلفي كنا مطرين الى اعادة صنع المكون او انشاء صنف يرث من صنف المكون ثم تغييره مثلا لتغير الهينت ف الدلفي hint نكتب كود : THintclass = Class (THintWindow)
Constructor Create (AOwner: TComponent); override;
end;كود : { THintConFont }
constructor THintclass.Create(AOwner: TComponent);
begin
inherited;
Create (Aowner);
Canvas.Font.Name := 'Vrinda';
Canvas.Font.Size := 12;
end;كود : procedure TForm1.FormCreate(Sender: TObject);
begin
HintWindowClass := THintclass;
end;اما في XAML نكتب كود : <Button Content="استراد" Height="23" Margin="155,79,163,106" Name="button1" >
<Button.ToolTip>
<ToolTip>
<StackPanel>
<TextBlock FontWeight="Bold" TextAlignment="Right">استراد قائمة الزباءن</TextBlock>
<TextBlock TextAlignment="Right" FontFamily="Vrinda">لاستراد كل معلومات الزبائن في ملف اكسل</TextBlock>
</StackPanel>
</ToolTip>
</Button.ToolTip>
</Button>انشلنا زر و اعطيناه يعض الخصاءص و حينما وصنا الى الهينت اردنا اتعمق في بناءها فكتلبنا كود : <Button.ToolTip><ToolTip>ثم طبعا لكتابة العنوان اضفنا المكون TextBlock مع خصاءص تخص العنوان و اخر به البقية ليسهذا كل شئ نستطيع اضا اضافة اي مكون في الهينت صورة غرافيك الخ في الدلفي صعبة جدا دروس xaml و wpf في بريزم - زكيري عبدالعالي - 27-06-2011 كود : <Button Content="عرض" Height="23" Margin="155,79,163,106" Name="button1" >
<Button.ToolTip><ToolTip>
<StackPanel>
<TextBlock FontWeight="Bold" TextAlignment="Center">زكيري عبد العالي</TextBlock>
<Image Source="http://www.bloghotel.org/uploads/avatars/7096_9824.jpg"></Image>
<TextBlock TextAlignment="Right" FontFamily="Vrinda" FontSize="10">مهندس برمجيات دلفي و دوت نت </TextBlock>
</StackPanel>
</ToolTip>
</Button.ToolTip>
</Button>الكود كامل في المرفقات دروس xaml و wpf في بريزم - زكيري عبدالعالي - 02-07-2011 السلام عليكم اضن الان قد اصبحت لدنا فكرة عن XAML و الان حان الوقت لنتعلم WPF Windows Presentation Foundation (WPF) Overview رابطة هنا http://www.arabteam2000-forum.com/index.php?showtopic=113042 سنناقش في هذا الموضوع تقنية WPF ومزاياها وكيفية البرمجة باستخدم اكواد XAML احد شروط المشاركة في النقاش هو ان يكون لدى الشخص فكرة عن الموضوع وحسب معرفتي بهذة التقنية اظنها ما زالت غريبة ويكسوها الغموض بالنسبة لاكثرية المبرمجين العرب ولا تكاد تجد مرجع واحد باللغة العربية يشرحها بل لن تجد بين مواقع الانترنت العربية من يبعد ذلك الغموض عن هذة التقنية فرئيت ان واجبي العلمي ان ابعد ذلك الغموض واكون نقطه البداية لمن يريد تعلم هذة التقنية وتهتم هذة التقنية بجانب Design ويعتبر احد اهم اسباب نجاح النظام من فشله ولقد قمت باعداد هذة المقدمة البسيطة كي يتم النقاش بمعرفة جيدة لما يتم النقاش عنه كي نحصد اكبر فائدة مرجوة من الموضوع وكي يشارك ويستفيد من النقاش اكبر عدد من الاعضاء وبعد قرئة المقدمة اجبني عن هذة الاسئلة وناقشني فيما لفة الغموض فيما قرئتة إقتباس :1- لماذا لايوجد الكثير من المواضيع عن هذة التقنية باللغة العربية حتى الان ؟ الجواب بقلم samerselo مراقب اداري 1- لماذا لايوجد الكثير من المواضيع عن هذة التقنية باللغة العربية حتى الان؟ أعتقد لقلة المهتمين بتتبع التقنيات الجديدة وإن وجد فإن المهتمين المتقدمين تكون لغتهم الانكليزية جيدة ويستقون المعرفة من مصادرها الأجنبية 2 - هل تعرفت الى مميزات هذة التقنية مقارنة مع WinForm من الافضل بنظرك ولماذا؟ تتميز هذه التقنية بالسهولة والديناميكية حيث يمكنك عمل أي تصميم يخطر ببالك والذي يسهل هذا الأمر هو أن كل تحكم هو Conatiner أي أننا يمكننا وضع أي تحكمات نريد داخله ستكون تقنية WPF أفضل من WinForms مستقبلا عندما يتم توفير مجال واسع من التحكمات تخدمها بمستوى مقارب للتحكمات الموجودة للتقنية الأخرى وذلك بسبب مرونة تصميم الواجهات 4 - هل تعتقد ان لواجهات العرض تاثير في بيع النظم ام انها شئ ثانوي ؟ طبعا تصميم واجهات العرض له أثر كبير في اقبال المستخدم على البرنامج وخاصة عندما تكون جميلة ومنظمة بشكل منطقي يسهل تذكره واستخدامه 5 - ماهو الذي ينقصك حتى الان للبدء في تعلم هذة التقنية ؟ بدأت فعلا ببعض التجارب على هذه التقنية ومشكلتي الرئيسية هي في تصميم الواجهات باستخدام Blend لأنه لا يمكنني إبداع واجهات رسومية مع أنه يمكنني برمجة أي شئ أحتاجه تقريبا لماذا لايوجد الكثير من المواضيع عن هذة التقنية باللغة العربية حتى الان ؟ بل توجد, ولكن قليلة ولا تغطي التقنية من كافة جوانبها. قلة الخبرات العربية بخصوص هذه التقنية حتى الآن, وحتى إن كانت توجد بوفرة فإن مخاضها العلمي لن يظهر إلا بعد مضي فترة لا بأس بها. المبرمج العربي هذه الأيام تحت تحدً كبير خصوصأ أمام قلة المصادر العربية التي تتحدث عن التقنيات الجديدة, لذلك يفترض به أن يتجه مباشرة نحو المصادر الأجنبية للتعلم, وألا يبقى مكتوف الأيادي ينتظر الفرج! عليه أن يتحرك حتى وإن تطلب الأمر أخذ كورس في اللغة الإنجليزية. 2- هل تعرفت الى مميزات هذة التقنية مقارنة مع WinForm من الافضل بنظرك ولماذا ؟ أجل تعرفت عنها منذ فترة , وبالتأكيد هي أفضل من WinForms لعدة أسباب: أنها حلّت الكثير من المشاكل التي كانت تتسبب فيها WinForms بالإضافة إلى دعمها الغني لتعدد الوسائط , الأمر الذي جعلنا في WinForms سابقاً نعتمد على مكتبات خارجية مثل WMP و DirectX Libraries, نفس الأمر بالنسبة للمستندات جيث كنا نعتمد على دائمًا مكوانت خارجية Third Party Components الأمر الذي يستبب في الكثير من المتاعب. أيضًا اختفت مشاكل Threading التي كنا تواجهنا في WinForms بفضل الاعتماد على Dispatcher Object. خلاصة القول: هذه التقنية جمعت كل المتطلبات التي يحتاجها أي مبرمج مهما كانت حاجته أو اهتمامه البرمجي. 3- ماهو الذي مازلت تبحث عنة في تصميم واجهات العرض ولم تجدة بهذة التقنية ؟ أعتقد أن الوقت لازال مبكرًا للإجابة عن هذا السؤال . 4- هل تعتقد ان لواجهات العرض تاثير في بيع النظم ام انها شئ ثانوي ؟ بالتأكيد , أعتقد أن الاعتماد على هذه التقنية في هذا الوقت خصوصاً والذي لا زالت تتنافس فيه تطبيقات ال WinForms في سوق البرمجيات سيحقق رواجاً ومكسبًا كبيرًا لمن يبرمج بهذه التقنية فهي ستقدم تجربة جديدة ونوعية للمستخدم , ولكن للأسف لم يستغل الكثيرون هذه الفرصة. 5- ماهو الذي ينقصك حتى الان للبدء في تعلم هذة التقنية ؟ في الواقع, لست مهتماً هذه الأيام بتطوير التطبيقات المكتبية , ولكن مهتم بتطوير المكتبات و المكونات Components واعتمادي على WPF ينحصر فقط في تجربة تلك المكونات للتحقق من عملها بالشكل المطلوب. إقتباس :مقدمة الى WPF بقلم الاخ المخلب الجارح الرابطة إقتباس :AliBazzi |