دروس xaml و wpf في بريزم
#11
النتيجة
[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 ترقم على الأساس الصفري ، بمعنى ان الصف الأول يكون رقمه 0 والصف الثاني يكون رقمه 1 وهكذا.

إذا لم نقم بتحديد الصف او العمود لعنصر معين فإن هذا العنصر يتم وضعه في الصف الأول والعمود الأول ، بسبب ان القيمة الأفتراضية للخصائص المرفقة Grid.Row و Grid.Column هي صفر(بمعنى الأول).
[attachment=91421:image007.png]

حجم الأعمدة والصفوف:
تقدم Grid ثلاث طرق لتحديد ارتفاع الصف وعرض الأعمدة:
- الحجم المطلق (Absolute size): حيث يتم تعيين رقم يمثل عدد الوحدات التي يشغلها العرض او الأرتفاع
كود :
<ColumnDefinition Width="100"/>
- الحجم التلقائي(Automatic size): حيث يعطى الصف او العمود القدر الذي يحتاج اليه تماما (استنادا على حجم المحتوى)
كود :
<ColumnDefinition Width="Auto"/>
- الحجم النسبي(Proportional size): حيث يتم تقسيم المساحة المعطاة على الصفوف اوالأعمدة
كود :
<ColumnDefinition Width="*"/>

وبشكل افتراضي، يكون التناسب متساويا ما لم نقم بإضافة رقم معين يسبق النجمة مثل:
كود :
<RowDefinition Height="*"/>
<RowDefinition Height="2*"/>
بهذا تكون نسبة الصف الأول إلى الصف الثاني هي 1 إلى 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>
[attachment=91422:image009.png]

الخاصية ShowsPreview :
تكون قيمة الخاصية ShowsPreview في GridSplitter هي False بشكل افتراضي ، مايعني ان GridSplitter سوف يقوم بتغيير حجم العمود او الصف مباشرة خلال عملية السحب، وعند تغيير هذه الخاصية إلى True فإن GridSplitter سوف يسمح للمستخدم ان يقوم بمعاينة الحجم المحدد اولا وعند تحرير زر الماوس فإن الحجم الجديد يتم تطبيقه.
الرد
#12
بعد كل هذا ستقول لم افهم شئ ياعبد العالي
اقول نعم لانك لم تبدا في xaml
ستقول كيف ابدأ
الطريقة التي ساتلعها ان شاء الله هي المقارنة بين الدلفي و البريسم و السي في نفس الوقت .
حسنا اترك المعلموات التى قراتها سايقا و ابدا معي من تحت الصفر

======================================
1- انشاء اول مشروع في wpf عرض نافذة فقط نعم سهلة
في نفس الوقت انشاء نفس المشروع بنفس التسميات في الدلفي العادي

لاحظ الصورة التالية و اكتب مشروعيك .


الملفات المرفقة
.jpg   Delphi_TO_Prism.jpg (الحجم : 23.37 KB / التحميلات : 26)
.rar   MyProjectDelphi.rar (الحجم : 93.96 KB / التحميلات : 18)
.rar   MyProjectPrism.rar (الحجم : 52.48 KB / التحميلات : 11)
الرد
#13
كود :
http://www.bloghotel.org/uploads/zekiriabd_Delphi_TO_Prism.jpg
الرد
#14
السلام عليكم
اليوم ايضا سنقوم بالمقارنة بين ملف الواجهة 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"
        >
هذا هو الكود لرسم الواجة MyForm
هل ما زلت خاءف من البريسم او من WPF اي XAML
اظر الان الى الكوين التالي
دلفي
كود :
object Label1: TLabel
      Left = 8
      Top = 35
      Width = 31
      Height = 13
      Caption = 'Label1'
    end
بريسم XAML
كود :
<Label
                Content="Label"
                Height="28"
                Margin="6,6,0,0"
                Name="label1"
                />
و الان الى listview
كود :
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
بريسم XAML
كود :
<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>
في المرفقات المشروعين مع صورة توضيحية
الرد
#15
السلام عليكم
اليوم ايضا سنقوم بالمقارنة بين ملف الواجهة 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"
        >
هذا هو الكود لرسم الواجة MyForm
هل ما زلت خاءف من البريسم او من WPF اي XAML
اظر الان الى الكوين التالي
دلفي
كود :
object Label1: TLabel
      Left = 8
      Top = 35
      Width = 31
      Height = 13
      Caption = 'Label1'
    end
بريسم XAML
كود :
<Label
                Content="Label"
                Height="28"
                Margin="6,6,0,0"
                Name="label1"
                />
و الان الى listview
كود :
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
بريسم XAML
كود :
<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>

****ا ان اجد اعضاء يجربون كل ما اكتب شكرا
في المرفات مثال
الرد
#16
المرفق عن مثال الانماط في wpf


الملفات المرفقة
.rar   MyProjectPrism.dproj.rar (الحجم : 45.16 KB / التحميلات : 10)
الرد
#17
أدوات 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
شكرا


الملفات المرفقة
.jpg   wpf.jpg (الحجم : 17.21 KB / التحميلات : 9)
الرد
#18
الان سنتعلم كيف نغير في خصاءص مكون بسهولة ففي الدلفي كنا مطرين الى اعادة صنع المكون او انشاء صنف يرث من صنف المكون ثم تغييره
مثلا لتغير الهينت ف الدلفي 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>
ثم اردنا كتابت عنوان وتحته كلام ائ المكون <StackPanel> يسمح لنا باضافة مكونات تحت بعضها البعض
ثم طبعا لكتابة العنوان اضفنا المكون TextBlock مع خصاءص تخص العنوان
و اخر به البقية

ليسهذا كل شئ نستطيع اضا اضافة اي مكون في الهينت صورة غرافيك الخ في الدلفي صعبة جدا
الرد
#19
كود :
<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>

الكود كامل في المرفقات


الملفات المرفقة
.jpg   HintWithPic.jpg (الحجم : 26.16 KB / التحميلات : 4)
.rar   MyProjectPrism.rar (الحجم : 93.54 KB / التحميلات : 8)
الرد
#20
السلام عليكم
اضن الان قد اصبحت لدنا فكرة عن XAML و الان حان الوقت لنتعلم WPF

Windows Presentation Foundation (WPF) Overview
رابطة هنا http://www.arabteam2000-forum.com/index....pic=113042

سنناقش في هذا الموضوع تقنية WPF ومزاياها وكيفية البرمجة باستخدم اكواد XAML
احد شروط المشاركة في النقاش هو ان يكون لدى الشخص فكرة عن الموضوع وحسب معرفتي بهذة التقنية
اظنها ما زالت غريبة ويكسوها الغموض بالنسبة لاكثرية المبرمجين العرب ولا تكاد تجد مرجع واحد باللغة العربية يشرحها
بل لن تجد بين مواقع الانترنت العربية من يبعد ذلك الغموض عن هذة التقنية فرئيت ان واجبي العلمي ان ابعد ذلك الغموض
واكون نقطه البداية لمن يريد تعلم هذة التقنية وتهتم هذة التقنية بجانب Design ويعتبر احد اهم اسباب نجاح النظام من فشله
ولقد قمت باعداد هذة المقدمة البسيطة كي يتم النقاش بمعرفة جيدة لما يتم النقاش عنه كي نحصد اكبر فائدة مرجوة من الموضوع
وكي يشارك ويستفيد من النقاش اكبر عدد من الاعضاء وبعد قرئة المقدمة اجبني عن هذة الاسئلة وناقشني فيما لفة الغموض فيما قرئتة

إقتباس :1- لماذا لايوجد الكثير من المواضيع عن هذة التقنية باللغة العربية حتى الان ؟
2- هل تعرفت الى مميزات هذة التقنية مقارنة مع WinForm من الافضل بنظرك ولماذا ؟
3- ماهو الذي مازلت تبحث عنة في تصميم واجهات العرض ولم تجدة بهذة التقنية ؟
4- هل تعتقد ان لواجهات العرض تاثير في بيع النظم ام انها شئ ثانوي ؟
5- ماهو الذي ينقصك حتى الان للبدء في تعلم هذة التقنية ؟


الجواب بقلم 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

Windows Presentation Foundation (WPF) وهي أعظم خطوة في تطوير واجهات المستخدم
قامت بها Microsoft وتعتبر الجيل ألرسومي الجديد لنظم العرض على كلتي منصات العمل
Windows- web-based applications
وتقنيته WPF الرسومية تعتمد على DirectX أي أنها اخف وأسرع للترجمة من GDI/GDI+
اذا أصبحت واجهات المستخدم تمتلك كل الإمكانيات المتاحة على اجهزة العرض (video cards)
وتمثل WPF اتحاد بين الشكل والوظيفة ومنافس قوي ل Flash , HTML وتوفر الحريه التامة
والسهولة في التصميم وتتطلب وجود (Framework 3.0) أو اعلي منه.

بقلم الاخ المخلب الجارح


الرابطة
إقتباس :AliBazzi
الـ WPF عندما ظهر كانت مايكروسفت تحاول حشره أيضا في الويب , وما زلت أذكر المشروع الذي عملت عليه قبل 3 سنوات بالـ WPF لكن كتطبيق يعمل في المتصفح (تستطيع عمل ذلك الاّن عن طريق القالب الذي يحمل إسم WPF Browser Application ) ,لكن التعقيد الذي قٌدم من خلالها في الحاجة إلى Certificate لكي يعمل كـ Full Trust Application لا يطاق , وإلا ستكتفي بتطبيق WPF يعمل في الـ Browser بإمكانات ضعيفة للغاية , عندها Microsoft قدمت Silver light الذي كان يشبه في إصدارته الأولى Mini WPF يعمل في المتصفح فقط , لكن أهم ميزة هي قدرته العمل على جميع المنصات Windows , Linux , Mac ...
وبالتالي , دعت الحاجة للعمل على فكرة عبور المنصات في الإصدارات المقبلة للـ Sliver light اكثر و أكثر
طيب , جميل , اليوم ما هو موقع كل من WPF و Silver light ?
ببساطة Silver light يحقق اليوم ما عجز الـ .Net نفسه عن تحقيقة (ليس لعجز فيه , ولكن لقرار "إستراتيجي" من مايكروسوفت) , ألا و هو عبور المنصات , Silver light حاليا ليس إلا Mini .Net يعمل في كل المنصات و مدعوم من مايكروسوفت (وهو يكبر يوم بعد يوم ) وبالتالي , إذا أدرت الـ Web فلا أرا أفضل من Silver light و الـ WPF يقف عاجز هنا لأن الـ WPF Browser Application يعمل فقط في بيئات Windows , إذا ما تجاهلنا التعقيد الناجم طبعا عن تشغيله كـ Full Trust Application ...
وأخيرا شيء ملفت للنظر حقا , قدمت Microsoft في PDC 2009 الـ Silver light 4 الذي يعمل كـ Desktop Application في كل المنصات , هذا بحد ذاته إيمان من مايكروسوفت نفسها في أن الـ Silver Light سينظر له ****ا أم اّجلا كـ Better .net يعمل في كل المنصات , عكس الـ .Net الذي نعرفه أتمنى أن تكون قد وضحت الأمور
الرد


التنقل السريع :


مستخدمين يتصفحوا هذا الموضوع: 1 ضيف