نمایش نتایج 1 تا 16 از 16

نام تاپیک: آموزش WPF (متوسط تا پیشرفته)

  1. #1

    آموزش WPF (متوسط تا پیشرفته)

    به نام خدا

    همان طور که دوستان در جریان هستند آقای کیانی با آموزش WPF واقعا کار بزرگی رو انجام دادند که جا داره از ایشون کمال تشکر را داشته باشم ولی بنا به دلایلی ایشون دیگر این مجموعه رو بروز رسانی نمی کنند ،به همین دلیل برآن شدم تا اندوخته های خودم رو در اختیار عزیزان هم وطن قرار دهم.

    فقط یک مسئله آن هم اینکه اگر با WPF آشنایی ندارید به فروم " آموزش WPF (مقدماتی تا پیشرفته ) " مراجعه کنند چون در اینجا سعی بر آن دارم تا مطالب ادامه این تاپیک و پیشرفته را ارائه کنم باشد تا مورد پسند دوستان قرار گیرد.

    لطفا برای تشکر از دکمه تشکر استفاده کنید و از نوشتن پست جدید خود داری کنید و برای سوالات خود از تاپیک های جداگانه ویا از پیام خصوصی اقدام کنید.

    همچنین در پایان هر بخش PDF مربوطه نیز برای دریافت ارائه خواهد گردید.

    پ و :
    دو پست بعدی جهت کار هایی در آینده رزرو خواهند شد....

  2. #2

    مباحث مقدماتی

    اگر با WPF آشنایی ندارید و یا حتی آشنایی کمی دارید می توانید به تایپیک آقای کیانی مراجعه کنید.در اینجا برای مراجعه سریعتر لیست مقالات ایشان آورده شده است.

    بخش اول : مقدمه ای بر تکنولوژی Windows Presentation Foundation بخش دوم : زبان XAML و کاربرد آن در WPFبخش سوم : چیدمان و طراحی کنترل ها

    قسمت اول : مقدمه

    قسمت دوم: چیدمان عناصر در WPF

    قسمت سوم : کنترل StackPanel

    قسمت چهارم: ادامه کنترل StackPanel

    قسمت پنجم: کنترل Canvas

    قسمت ششم: کنترل DockPanel

    قسمت هفتم: کنترل WrapPanel

    قسمت هشتم: کنترل UniformGrid

    قسمت نهم: کنترل Grid

    قسمت دهم: ادامه کنترل گرید

    قسمت یازدهم: ادامه کنترل گرید

    قسمت دوازدهم: ادامه کنترل گرید

    قسمت سیزدهم: محدوده سطر و ستون ها در کنترل گرید
    بخش چهارم: Content Controls
    بخش پنجم:
    Dependency Propertices

    همچنین می توانید از نکات کاربردی و بسیار مفید WPF در تایپیک " 1001 نکته در WPF " استفاده کنید.
    آخرین ویرایش به وسیله ali.aghdam : پنج شنبه 27 آبان 1389 در 19:02 عصر

  3. #3

    دسترسی سریع به مزالب این بخش

    بخش ششم : Resources
    قسمت سوم: خاصیت Shared
    قسمت ششم: Resource Dictionaries

    دریافت فایل PDF بخش ششم : دریافت

    بخش هفتم :
    Routed Event
    .
    ..
    ...

    بخش هشتم :
    Application
    Comming Soon
    بخش نهم : Binding
    Comming Soon
    ...

    ...

    ...
    آخرین ویرایش به وسیله ali.aghdam : جمعه 28 آبان 1389 در 01:56 صبح

  4. #4

    بخش ششم-Resources-مقدمه ای بر Resources (قسمت اول)

    سیستم Resourceدر WPF راهی برای نگهداری و استفاده مجدد از یک مجموعه شی ، براش ها ،Template ها ،رنگ ها و... است.شما می توانید به راحتی Resource ها را در کد XAML مربوط به یک Window و یا به عنوان Resource کل برنامه تعریف کنید که با این عمل مقدار خیلی زیادی از کدنویسی کاهش می یابد همچنین امکان تغییر در ظاهر سیستم بسیار سهل می گردد.

    پایه و اساس Resource :

    WPF این امکان را فراهم می کند که Resource ها را در کد و یا در قسمت های مختلف تعریف کنید به عنوان مثال Resource می تواند برای یک کنترل خاص و یا یک پنجره خاص و حتی برای یک برنامه خاص تعریف شود.

    تا اینجا بیان نمودم که Resource می تواند برای هر کنترلی تعریف شود این به این دلیل است که هر FrameworkElement دارای پیاده سازی ضمنی از کلاس ResourceDictionary است.
    ResourceDictionary مجموعه ای از Resource ها را در خود نگه داری می کند که این Resourceها می توانند هر نوع شئ را در خود نگهداری کنند که بوسیله ویژگی Key که رشته است،ایندکس می شوند.

    یک نمونه ساده تعریف و استفاده از Resource:

    در این نمونه می خواهیم یک RadialGradientBrushتعریف کرده سپس آن را به خاصیت Backgroundچند دکمه نسبت دهیم.

    <Window.Resources>
    <RadialGradientBrush x:Key="btnGRBrush" >
    <GradientStop Color="Azure" Offset="0.4"/>
    <GradientStop Color="Peru" Offset="0.55"/>
    <GradientStop Color="PaleGoldenrod" Offset="1"/>
    </RadialGradientBrush>
    </Window.Resources>
    <StackPanel >
    <Button Background="{StaticResource btnGRBrush}" Margin="5">Button 1</Button>
    <Button Margin="5">Button 2</Button>
    <Button Background="{StaticResource btnGRBrush}" Margin="5">Button 3</Button>
    <Button Margin="5">Button 4</Button>
    </StackPanel>
    دقت داشته باشید در کد XAML بالابرای دودکمه از RadialGradientBrush تعریف شده در Resource پنجره استفاده شده که خروجی نیز در تصویر زیر به نمایش در آمده است.



    آخرین ویرایش به وسیله ali.aghdam : پنج شنبه 27 آبان 1389 در 21:28 عصر

  5. #5

    بخش ششم-Resources-نحوه ی استفاده از Resource ها (قسمت دوم)

    اگر دقت کرده باید در کد قسمت قبل وقتی براش RadialGradientBrush را به خاصیت Background نسبت می دادیم نوع اشاره ما به براش StaticResource بود، این به چه معنی است ؟

    در هنگام اشاره به یک Object که در Resource تعریف شده است،دو نوع طریق اشاره وجود دارد:

    • StaticResource :در این نوع درهنگام ساخته شدن پنجره ، Resource یک بار نسبت داده می شود.
    • DynamicResource :در این نوع ،در هنگام نیاز شئ درون Resource نسبت داده می شود و در صورت تغییر خصوصیات کنترل های که به آن اشاره می کنند نیز تغییر می کنند .

    بگذارید این نوع اشاره ها را با یک مثال بررسی کنیم.در این مثال نوع اشاره دکمه 1 را به DynamicResourceتغییر می دهیم و با کلیک بر روی دکمه 1 رنگ براش RadialGradientBrush تعریف شده در Resource را تغییر می دهیم تا نتیجه را مشاهده کنیم :

    <Window.Resources>
    <RadialGradientBrush x:Key="btnGRBrush" >
    <GradientStop Color="Azure" Offset="0.4"/>
    <GradientStop Color="Peru" Offset="0.55"/>
    <GradientStop Color="PaleGoldenrod" Offset="1"/>
    </RadialGradientBrush>
    </Window.Resources>
    <StackPanel >
    <Button Background="{DynamicResource btnGRBrush}" Margin="5" Click="Button_Click">Button 1</Button>
    <Button Margin="5">Button 2</Button>
    <Button Background="{StaticResource btnGRBrush}" Margin="5">Button 3</Button>
    <Button Margin="5">Button 4</Button>
    </StackPanel>


    Code Behindبه صورت زیر :

    private void Button_Click(object sender, RoutedEventArgs e)
    {
    this.Resources["btnGRBrush"] = new RadialGradientBrush(Colors.BlanchedAlmond ,Colors.Blue);
    }


    با اینکار خروجی به صورت زیر تغییر میکند که تفاوت بین DynamicResource و StaticResource به نمایش در می آید.



    نکته مهم :توجه داشته باشید که در هنگام استفاده از این نوع اشاره ها دقت کنید چون StaticResourceها در هنگام ساخته شدن فرم ساخته شده و نسبت داده شده می شود ولی DynamicResourceتا هنگام نیاز ساخته نمی شوند.سعی کنید از StaticResource هنگامی استفاده کنید که هیج تغییری در آن ها بوجود نمی آید و از DynamicResource هنگامی که در هنگام اجرا تغییر می کنند (به عنوان مثال از دینامیک برای تنظیمات برنامه ای که با تغییر خصوصیات در همان لحظه تغییر ها اعمال می شوند و از استاتیک ها زمانی که با تغییر تنظیمات برنامه نیاز به ریستارت برنامه برای اعمال تغییر می باشد.) .
    آخرین ویرایش به وسیله ali.aghdam : پنج شنبه 27 آبان 1389 در 19:07 عصر

  6. #6

    بخش ششم-Resources-خاصیت Shared (قسمت سوم)

    خاصیت Shared :

    وقتی که شما از چندین کنترل به یک Resource اشاره می کنید در واقع شما به یک نمونه از Resource اشاره می کنید که دلیل آن true بودن خاصیت Shared به صورت پیش فرض است ولی اگر بنا به دلایلی می خواهید که در هنگام اشاره هر کنترل به resource یک نمونه جدید به آن نسبت داده شود این خاصیت را با False مقداردهی کنید


    <Window.Resources>
    <RadialGradientBrush x:Key="btnGRBrush" x:Shared="False" >
    <GradientStop Color="Azure" Offset="0.4"/>
    <GradientStop Color="Peru" Offset="0.55"/>
    <GradientStop Color="PaleGoldenrod" Offset="1"/>
    </RadialGradientBrush>
    </Window.Resources>
    نکته : با این کار در عمل مزایای DynamicResource از بین می رود.
    آخرین ویرایش به وسیله ali.aghdam : پنج شنبه 27 آبان 1389 در 19:08 عصر

  7. #7

    بخش ششم-Resources-نحوه ی تعریف و استفاده از Application Resource (قسمت چهارم)

    تعریف Resource ها در هر فرم کار عاقلانه ای نیست برای همین در اکثریت مواقع Resource ها را در بالاترین سطح برنامه یعنی Application تعریف می کنیم.هنگامی که به یک Resource اشاره می کنیم اگر آنResource در کنترل ،Window ویا Page جاری وجود نداشته باشد،Resource های Application جستجو می شود که بهترین قسمت برای Resourceهای است که در کل برنامه مورد استفاده قرار می گیرند.

    برای این کار Resource را در فایل App.xaml تعریف می کنیم به صورت زیر


    <Application x:Class="wpf_resources.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="MainWindow.xaml">
    <Application.Resources>
    <!-- define resource Here-->
    </Application.Resources>
    </Application>
    حال فقط کافی است که از آن Resource استفاده کنیم تا بوسیله مکانیزم بالا به Resource مورد نظر دسترسی پیدا کنیم.
    آخرین ویرایش به وسیله ali.aghdam : پنج شنبه 27 آبان 1389 در 19:09 عصر

  8. #8

    بخش ششم-System Resources و نحوه استفاده از آن(قسمت پنجم)

    System Resource همان تنظیمات سیستم است که ما از آنها استفاده می کنیم در قبل گفتیم که وقتی Resource ی پیدا نشود به Application Resource مراجعه می گردد و در صورت نبود به System Resource مراجعه می شود.این Resourceها در قالب سه کلاس هستند که در فضای نام System.Windows قرار دارند.

    • SystemColors;:دستیابی به تنظیمات رنگ سیستم را فراهم می کند.
    • SystemFonts:دستیابی به تنظیمات قلم سیستم را فراهم می کند.
    • SystemParameters:دستیابی به طیف عظیمی از تنظیمات سیستم را فراهم می کند از جمله تنظیمات پنجره ها و سایز آن ،موس و کیبورد و...گرفته تا جلوه های نمایش سیستم.

    نکته :خصوصیات همه این کلاس ها از نوع ایستا هستند و در هنگام اشاره به آن می بایست به آن از نوع ایستا اشاره کنیم.

    در مثال زیر از هر سه کلاس استفاده شده است

    <!-- SystemFonts -->
    <Button Margin="5"
    FontSize="{x:Static SystemFonts.IconFontSize}"
    FontWeight="{x:Static SystemFonts.MessageFontWeight}"
    FontFamily="{x:Static SystemFonts.CaptionFontFamily}">Button 2</Button>

    <!-- SystemColors-->
    <Button Margin="5"
    BorderBrush="{x:Static SystemColors.ActiveBorderBrush}"
    Background="{x:Static SystemColors.HotTrackBrush}"
    Foreground="{x:Static SystemColors.HighlightTextBrush}"
    >Button 4</Button>

    <!-- SystemParameters -->
    <Button Margin="5"
    Width="{x:Static SystemParameters.MenuWidth}"
    Height="{x:Static SystemParameters.IconGridWidth}">

    </Button>
    آخرین ویرایش به وسیله ali.aghdam : پنج شنبه 27 آبان 1389 در 19:10 عصر

  9. #9

    بخش ششم-Resource Dictionaries (قسمت ششم)

    وقتی بخواهید که Resource های خود در پروژه های دیگر استفاده کنید و یا حتی آنها را از هم جدا کنید تا در صورت نیاز به راحتی از آنها استفاده کنید برای این منظور از Resource Dictionary استفاده می کنیم.Resource Dictionary یک فایل XAML ساده است که کاری انجام نمی دهد بلکه Resource ها را در خود نگهداری می کند.

    ساخت یک Resource Dictionary ساده :

    برای این منظور از منوی Project سپس Add New item کلیک کرده سپس از پنجره باز شده " Reource Dictionary " را انتخاب می کنیم.فایل XAML جدیدی با محتوای زیر باز می شود.

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">



    </ResourceDictionary>
    سپس Resource های خود را در آن می نویسیم و برای استفاده از آن بسته به نیاز خود در کنترل ،پنجره و یا برنامه از آن به صورت زیر استفاده می کنیم.
    در اینجا از Resource Dictionary در Application Resource استفاده شده است:

    <Application x:Class="wpf_resources.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="MainWindow.xaml">
    <Application.Resources>
    <ResourceDictionary Source="WhistlerBlue.xaml"/>
    </Application.Resources>
    </Application>
    نکته : توجه داشته باشید خاصیت Build Action فایل Dictionary حتما با Page تنظیم شده باشد Performance بالای داشته باشیم

    نکته : اگر در برنامه خورد چندین Resource Dictionary داشته باشیم که حتما همینطور است از روش زیر برای استفاده از آنها استفاده می کنیم

    <Application x:Class="wpf_resources.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="MainWindow.xaml">
    <Application.Resources>
    <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="WhistlerBlue.xaml"/>
    </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
    </Application.Resources>
    </Application>
    آخرین ویرایش به وسیله ali.aghdam : پنج شنبه 27 آبان 1389 در 19:10 عصر

  10. #10

    Smile فایل PDF بخش ششم

    همانطور که قبلا قول داده بودم فایل PDF این بخش رو آماده کردم ولی به نظر خودم اون طور که می خواستم نشد ولی انشالله در بخش های بعدی سعی بر آن دارم که آموزش های بهتری ارائه بدم.


  11. #11

    بخش هفتم-معرفی Routed Event (قسمت اول)

    هر برنامه نویس دات نت با مفهوم Event ها آشنایی دارد (پیغام های که از یک شئ به شئ دیگر در هنگام رخ دادن عملی فرستاده می شوند) ولی در WPF به خاطر تفاوت های که در آن وجود دارد دیگر نمی توان به شکلی موثر از Event های معمول در Winform ها استفاده کرد برای همین WPF نوعی سیستم به نام Routed Event زیر سازی شده تا بتوان به شکلی موثر از مفهوم Event ها استفاده کرد.

    دلیل استفاده نکردن WPF از سیستم قبلی رویدادها به خاطر ساختار سلسله مراتبی اشیاء/اعضاء در WPF است یعنی ما در WPF می توانیم ساختار درختی از اشیاء/اعضاء را داشته باشیم به طور مثال می توان درون یک دکمه یک تکست باکس داشته باشیم که اگر بخواهیم از سیستم قبلی رویداد استفاده کنیم برای هر یک از این اعضاء رویداد مربوطه را تعریف کنیم که این عمل در دنیای واقعی کاری تاقت فرسا می باشد که می تواند زمان زیادی از پروژه را بی دلیل از بین ببرد.

    سیستم Routed Event این امکان را فراهم می سازد که یک رویداد توسط یک عضو رخ دهد و توسط یک عضو دیگر اجرا شود یعنی زیر شی ها می توانند به رویداد والدین خود دسترسی پیدا کنند(Event Bubbeling) این نوع دسترسی با توجه به نوع استراتژی پیمایش (RoutingStrategy) رویداد در درخت نمایش (Visual Tree) صورت می گیرد .
    در هنگام استفاده ازWPF بدون اطلاع از Routed Event استفاده می کنیم که برای نشان دادن این کار یک دکمه ایجاد کنید و یک رویداد کلیک به آن اضافه کنید.

    <Button Name="testbutton" Click="Button_Click">Click Me!</Button>
    و برای اینکه متوجه این امر بشوید به Code Behind برنامه رفته و از درون سازنده بر روی InitializeComponent کلیک راست کرده سپس Go To Definition را انتخاب کنید و از بین کد ها در partial کلاس کد مربوط به ثبت رویداد کلیک دکمه را پیدا کنید.

    #line 6 "..\..\..\MainWindow.xaml"
    this.testbutton.Click += new System.Windows.RoutedEventHandler(this.Button_Clic k);
    این کد ها در هنگام طراحی توسط Designer ایجاد شده که یک Routed Event در کلیک دکمه ثبت می شود(Register).

  12. #12
    کاربر تازه وارد
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    تهران
    پست
    46

    نقل قول: مباحث مقدماتی

    نمی دونم چرا نمیتونم با نوشته ارتباط برقرار کنم! دلم میخواد فیلم آموزشی باشه قشنگ همه چیزو با چشم ببینم!!!

  13. #13

    Lightbulb نقل قول: مباحث مقدماتی

    نقل قول نوشته شده توسط fateme65 مشاهده تاپیک
    نمی دونم چرا نمیتونم با نوشته ارتباط برقرار کنم! دلم میخواد فیلم آموزشی باشه قشنگ همه چیزو با چشم ببینم!!!
    اطلاعات ابتدای تایپیک را مطالعه کنید و از پست های بی محتوا و سوالات خود داری کنید

    خبر : در حال حاظر در حال حاضر درحال طراحی سایتی برای آموزش WPF و همچنین یک EBook هستم و فعلا تایپیک تا اطلاع ثانوی بروز نخواهد شد.

  14. #14
    کاربر دائمی آواتار sajjad_kochekian
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    اصفهان نصف جهان
    پست
    581

    نقل قول: آموزش WPF (متوسط تا پیشرفته)

    ادامه این تاپیک چی شد؟

  15. #15
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    ESFAHAN
    پست
    147

    نقل قول: آموزش WPF (متوسط تا پیشرفته)

    خسته نباشید
    لطفا ادامه بدید تااینجاش عالی بوده حیفه
    سپاس

  16. #16
    کاربر دائمی
    تاریخ عضویت
    آبان 1393
    محل زندگی
    ایران
    پست
    354

    نقل قول: آموزش WPF (متوسط تا پیشرفته)

    ببخشید با توجه به عنوان سوالی دارم.

    معادل دستور Invoke یا بهتر بگم، کد زیر در WPF چیه؟

    2015-12-11_145328.png

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •