دریافت قالب WpfFramework.vsix و نحوه نصب و راه اندازی آن
فایل قالب پروژه دوره جاری را از آدرس ذیل می‌توانید دریافت کنید:

نصب ابتدایی آن بسیار ساده است و نکته خاصی ندارد.
پس از نصب، یکبار VS.NET را بسته و سپس باز کنید. این قالب جدید، ذیل قسمت پروژه‌های ویندوز مرتبط با ویژوال سی شارپ، ظاهر خواهد شد:


در این حال اگر یک پروژه جدید را آغاز کنید، این قالب تدارک دیده شده، لایه‌ها و قسمت‌های مختلف را به صورت خودکار اضافه خواهد کرد:



نکته مهم! برنامه کامپایل نمی‌شود!

به عمد، جهت کاهش حجم قالب دریافتی فوق، فایل‌های باینری آن پیوست نشده‌اند. وگرنه باید بالای 30 مگابایت را دریافت می‌کردید که واقعا نیازی نیست.
اما اگر به هر پروژه داخل Solution دقت کنید، فایل متنی packages.config آن نیز پیوست شده است. به کمک این فایل‌ها به سادگی می‌توان تمام وابستگی‌ها را از طریق NuGet بازیابی کرد.
برای این منظور ابتدا به اینترنت متصل شده (مهم) و سپس بر روی Solution کلیک راست کرده و گزینه فعال سازی Restore کلیه بسته‌های نیوگت را انتخاب کنید.


پس از اینکار، آخرین نگارش NuGet.exe از اینترنت دریافت و به پروژه اضافه می‌شود:


اکنون اگر Solution را Build کنید، اولین کاری که صورت خواهد گرفت، دریافت کلیه وابستگی‌ها از سایت NuGet است. اندکی تامل کنید تا اینکار تمام شود.
پس از پایان کار دریافت، پوشه packages در کنار فایل sln پروژه ایجاد شده، تشکیل می‌شود.
یکبار وجود آن‌را بررسی کنید.


اکنون اگر برنامه را Build کنید احتمالا پیغام می‌دهد که Fody را نمی‌تواند پیدا کند با اینکه دریافت شده و در پوشه packages موجود است. هر زمان، هر پیغام خطایی در مورد Fody مشاهده کردید، فقط یکبار VS.NET را بسته و باز کنید. مشکل حل می‌شود!

تنها کاری که پس از بازسازی پوشه packages بهتر است صورت گیرد (اختیاری است البته)، صدور دستور ذیل در خط فرمان پاور شل است:
 PM> Update-Package
با این دستور، دریافت کامل مجددی از اینترنت صورت نمی‌گیرد؛ مگر اینکه به روز رسانی جدیدی را یافت کند. در سایر حالات از کش داخل سیستم اطلاعات را دریافت می‌کند.
پس از اینکار، نیاز است یکبار VS.NET را بسته و مجددا باز کنید (مهم) تا تمام وابستگی‌ها به درستی بارگذاری شوند. خصوصا بسته Fody که کار AOP را انجام می‌دهد. در غیر اینصورت موفق به Build پروژه نخواهید شد.

بنابراین به صورت خلاصه:
الف) یکبار گزینه فعال سازی Restore کلیه بسته‌های نیوگت را انتخاب کنید.
ب) پروژه را Build کنید تا وابستگی‌ها را از سایت NuGet دریافت کند.
ج) دستور Update-Package را اجرا نمائید (اختیاری).
ج) VS.NET را پس از سه مرحله فوق، یکبار بسته و باز کنید.

در کل بسته‌های مورد استفاده به این شرح هستند:
PM> Install-Package MahApps.Metro -Pre 
PM> Install-Package MahApps.Metro.Resources 
PM> Install-Package EntityFramework
PM> Install-Package structuremap
PM> Install-Package PropertyChanged.Fody
PM> Install-Package MvvmLight 
PM> Install-Package Microsoft.SqlServer.Compact

یک نکته جانبی
فید NuGet در VS.NET به Https تنظیم شده است. اگر دسترسی به Https برای شما به کندی صورت می‌گیرد فقط کافی است مسیر فید آن‌را در منوی Tools، گزینه‌ی Options، ذیل قسمت Package manager یافته و به http://nuget.org/api/v2 تغییر دهید؛ یعنی به Http خالی، بجای Https؛ تا سرعت دریافت بسته‌های NuGet مورد نظر افزایش یابند.



اجرای پروژه و برنامه

پس از این مراحل و Build موفقیت آمیز پروژه، برنامه را اجرا کنید. در اولین بار اجرای برنامه به صورت خودکار بانک اطلاعاتی به همراه ساختار جداول تشکیل می‌شوند. اما ... با خطای زیر مواجه خواهید شد:
 The path is not valid. Check the directory for the database. [ Path = D:\...\bin\Debug\Db\db.sdf ]
علت این است که در فایل app.config پروژه ریشه برنامه :
<connectionStrings>
    <clear/>
    <add name="MyWpfFrameworkContext"
         connectionString="Data Source=|DataDirectory|\Db\db.sdf;Max Buffer Size=30720;File Mode=Read Write;"
         providerName="System.Data.SqlServerCE.4.0" />
  </connectionStrings>
مسیر تشکیل بانک اطلاعاتی به پوشه db کنار فایل اجرایی برنامه تنظیم شده است. این پوشه db را در پوشه bin\debug ایجاد کرده و سپس برنامه را اجرا کنید.


برای ورود به برنامه از نام کاربری Admin و کلمه عبور 123456 استفاده نمائید.
این کاربر پیش فرض در کلاس MyWpfFrameworkMigrations لایه داده‌های برنامه، توسط متد addRolesAndAdmin اضافه شده است.


خوب! تا اینجا با نحوه نصب و راه اندازی این قالب جدید آشنا شدیم. در قسمت‌های بعد، به جزئیات ارتباطات و نحوه استفاده از آن به عنوان پایه یک کار و پروژه جدید، خواهیم پرداخت.




به روز رسانی 1.1
جهت سازگاری با EF 6 ، StructureMap 3 و همچنین VS 2013، پروژه به روز شد: WpfFrmwork_1.1.zip

به روز رسانی نهایی
به روز شده‌ی این پروژه را بر اساس آخرین وابستگی‌های آن از اینجا دریافت کنید.
  • #
    ‫۱۱ سال و ۴ ماه قبل، جمعه ۱۰ خرداد ۱۳۹۲، ساعت ۰۳:۲۸
    با سلام 
    با تشکر  بابت شروع این دوره ، می‌خواستم بدونم این فریمورک قراره ماهیت آموزشی داشته باشه یا اینکه توسعه داده میشه؟ آیا می‌تونیم توی توسعه این فریم ورک همکاری داشته باشیم؟
    یک باگ کوچیک توی قسمت GetTableName  برای sql server وجود داره، با توجه به نام جدول ترتیب جایگزینی صحیح نیست.
    //table="[dbo].[Users]"
        return table
                         .Replace("dbo.", string.Empty)
                         .Replace("`", string.Empty)
                         .Replace("[", string.Empty)
                         .Replace("]", string.Empty)
                         .Trim()
    
    
         return table
                         .Replace("`", string.Empty)
                         .Replace("[", string.Empty)
                         .Replace("]", string.Empty)
                         .Replace("dbo.", string.Empty)
                         .Trim();
  • #
    ‫۱۱ سال و ۳ ماه قبل، پنجشنبه ۳۰ خرداد ۱۳۹۲، ساعت ۲۰:۱۵
    با سلام.
    امکان دارد در مورد نحوه ایجاد قالب برای یک solution با چند پروژه (همانند دوره‌ی جاری) راهنمایی بفرمایید؟
  • #
    ‫۱۱ سال و ۳ ماه قبل، سه‌شنبه ۴ تیر ۱۳۹۲، ساعت ۱۴:۰۶
    با عرض سلام و خسته نباشید
    چرا در این فریمورک نمی‌توان با Webbrowser پیش فرض Wpf  کار کرد؟
    محتوای سایت بارگزاری می‌شود اما کاربر نمی‌تواند چیزی را مشاهده کند
    • #
      ‫۱۱ سال و ۳ ماه قبل، سه‌شنبه ۴ تیر ۱۳۹۲، ساعت ۱۴:۴۰
      مشکلی مشاهده نشد: (تصویری است از یک کنترل مرورگر وب که در آن یک صفحه html بارگذاری شده است)

      ضمنا، موضوع بحث مطلب جاری «نصب و راه اندازی» است. هر دوره یک قسمت پرسش و پاسخ جداگانه هم دارد.

  • #
    ‫۱۰ سال و ۱۰ ماه قبل، یکشنبه ۱۷ آذر ۱۳۹۲، ساعت ۰۰:۵۸
    با سلام
    پیشنهاد می‌کنم قبل از نصب فریم ورک NuGet را ارتقا دهید تا جدیدترین ورژن بسته‌ها هم قابل نصب باشند
    NuGet upadate path
  • #
    ‫۱۰ سال و ۵ ماه قبل، سه‌شنبه ۲۶ فروردین ۱۳۹۳، ساعت ۱۸:۳۴
    با سلام، بسته‌ی نصبی بر روی ویژوال استودیو 2013 نصب نمی‌شود. لطفاً راهنمایی کنید
    • #
      ‫۱۰ سال و ۵ ماه قبل، چهارشنبه ۲۷ فروردین ۱۳۹۳، ساعت ۰۰:۱۶
      نگارش جدید آن‌را از انتهای مطلب دریافت کنید.
  • #
    ‫۹ سال و ۵ ماه قبل، چهارشنبه ۲ اردیبهشت ۱۳۹۴، ساعت ۰۰:۵۷
    جهت اطلاع
    کدهای این پروژه بر اساس آخرین وابستگی‌های آن به روز شد و در این مخزن کد قرار گرفت.
  • #
    ‫۹ سال و ۱ ماه قبل، چهارشنبه ۲۸ مرداد ۱۳۹۴، ساعت ۰۸:۴۵
    با سلام؛ در پروژه شما2 اسمبلی وجود داره با نام Infrastructure و Models
    میخواستم بدونم کاربرد این 2 اسمبلی چیه ؟
    اصولا چه چیزهایی در این دو اسمبلی قرار میگیره. 
    اگر هم وقت داشتید لطفا یک توضیح مختصر در مورد اسمبلی‌های دیگه هم ذکر کنید.
    طبق چیزهایی که من متوجه شدم.

     اسمبلی DomainClasses برای موجودیت‌های بانک اطلاعاتی طراحی میشه .
    اسمبلی Common هم برای درج کلاس‌ها و متدهای مستقل طراحی میشه. مثلا یک کلاس Helper برای کار با تاریخ شمسی.
    اسمبلی Service برای کار با بانک اطلاعاتی یا ORM طراحی میشه.
    اسمبلی UI هم رابط کاربری مارو تشکیل میده. که هیچکدوم از اسمبلی‌های دیگه به این اسمبلی وابسطه نیستند و یک طورایی این اسمبلی به تمام اسمبلی‌های دیگه وابسطه هستش.

    و در آخر اینکه اصولا هیچ اسمبلی برای ViewModel‌ها در نظر گرفته نمیشه ؟ در پروژه شما چندین جا از پوشه ای با نام viewModel استفاده شده. نمیشه همه‌ی اینارو در یک اسمبلی قرار بدیم ؟