هیچ دوره ای در سبد آموزش شما وجود ندارد
معرفی
در این آموزش شما با WPF از پایه آشنا شده و با تمام موارد مربوط به استایل نویسی، تمپلیت نویسی و… آشنا میشوید. در ادامه میتوانید از معماری MVVM در برنامه های خود استفاده کرده و اقدام به ایجاد کنترل های اختصاصی (CustomCotrol) نمایید. همچنین در فصل اخر اقدام به ایجاد چندین پروژه بصورت پروژه محور خواهیم کرد. که شامل نرم افزار رابط کاربری برای پلتفرم winget مایکروسافت، دریافت زیرنویس از سایت Subscene، دریافت اطلاعات مربوط به کرونا ویروس و رسم نمودار و دریافت اطلاعات فیلم و سریال از سایت imdb همچنین نحوه ارتباط با دیتابیس نیز در این دوره موجود می باشد.
این دوره در 6 فصل تهیه شده و از مقدماتی شروع شده و تا سطح پیشرفته ادامه می یابد.
- در این دوره آموزش WPF از جدیدترین نسخه ها و تکنولوژی های تازه معرفی شده استفاده شده مثل (.Net Core 3, Net 5, EntityFrameWork Core
- بدلیل استفاده از الگوریتم RAR5 برای فشرده کردن فایلها جهت آنپک کردن از نسخه آخر Winrar استفاده کنید.
نمونه پروژه هایی که در دوره آموزش WPF توسعه خواهیم داد.
- پروژه imdb را در تصویر زیر مشاهده میکنید.
- میتوانید برای مشاهده ی دموی پروژه ها فایل تصاویر را از لیست دانلود مشاهده کنید.
تکنولوژی های مورد استفاده آموزش WPF
- زبان برنامه نویسی C#
- Visual Studio 2019
- WPF
- Entityframwork Core
- Net 5.
- Net Core 3.
- CodeFirst
- Sqlite
- Linq
- Lambda
مواردی که در این دوره آموزش WPF یاد خواهید گرفت
قدم اول : پایه و اساس WPF و XAML
سطح آموزش: مقدماتی (25 جلسه آموزشی)
- آموزش نصب ویژوال استودیو
- آشنایی با xaml و Resources
- آموزش تمام کنترل های پایه موجود در WPF
- (PasswordBox-Rectangle-RadioButton-RichTextControl- Menus-ContextMenu-Statusbar- TabControl-ToolbarTray- Border-Slider-GroupBox-Expander-Progressbar-Ribbon- ItemControl-ListBox-ComboBox- ToolTip-TextRendering-TabOrder-AccessKey- ToolTip- ListView-Group-Sort-Filter- TreeView- DataGrid- RepeatButton-TextBlock-TextBox-Label-Image-CheckBox)
- آموزش انواع پنل ها (Panels-Canvas-WrapPanel-Grid-UniformGrid-GridSpliter-StackPanel-DockPanel)
- آموزش DataBinding
- آموزش Converter
- آموزش فرمت بندی متن در xaml
- آموزش InotifyPropertyChanged و ObservableCollection
- آموزش Command ها در WPF شامل (SystemCommands / CustomCommands / RelayCommand)
- آموزش کار با انواع دیالوگ ها (OpenFileDialog-SaveFileDialog-FolderBrowserDialog-CustomDialog)
- آموزش استفاده از سیستم رندر کردن متن
- آموزش نوشتن استایل
- آموزش نوشتن انواع تریگر DataTriggers-Triggers-MultiDataTrigger
- آموزش پخش رسانه های مختلف فیلم و صدا
- آموزش استفاده از تایمر
- آموزش استفاده از backgroundworker
- آموزش استفاده از Task
- آموزش کار با تصاویر 2 بعدی Geometry
- آموزش کار با انیمیشن
- آموزش استفاده از HotReload و Visual Tree در xaml
- جستجو در کنترل های ListBox و Datagrid به روش CollectionView
قدم دوم : ورود به دنیای WPF
سطح آموزش: متوسط (34 جلسه آموزشی)
- آموزش ایجاد کنترلهای xaml در سی شارپ (Code behind)
- استفاده از فونت در برنامه بدون نیاز به نصب در سیستم کاربر
- ساخت برنامه های چندزبانه (پویا و استاتیک) استفاده از فایل های Json, Resx, xaml
- آموزش گزارش گیری از برنامه
- آموزش استفاده از سرویس AppCenter برای گزارش گیری
- آموزش کار با Enum ها در سی شارپ و Xaml (اتصال به کنترل ها مثل ComboBox)
- کار با رجیستری ویندوز
- آموزش ایجاد فایل تنظیمات برنامه بصورت فایل Json
- آموزش اجرای برنامه با منوی کلیک راست ویندوز
- آموزش کتابخانه Newtonsoft.Json برای Serialize و Deserialize کردن فایل های json
- آموزش ایجاد کلیدهای میانبر برای برنامه ShortCuts
- استفاده از منوی popup
- دسترسی به توابع از کلاس های مختلف
- دریافت تاریخ شمسی
- آموزش T4 (Text Template Transformation Toolkit) جهت ایجاد کدها بصورت لحظه ای
- آموزش کار با بسته های nuget (نصب بسته ها، ایجاد بسته ها و اپلود در سایت ناگت)
- آموزش Git and Github (Commit/Push/Pull/PR,…)
- آموزش استفاده از فریمورک Cake برای بیلد کردن پروژه
- آموزش استفاده از توابع C++ در سی شارپ به کمک P/Invoke
- آموزش استفاده از Xaml Behavior و Interaction های موجود
- آموزش استفاده از Visual State
- آموزش ایجاد انواع Extension Method
- آموزش کرک برنامه های دات نت، و نحوه محافظت از کدها در قبال کرک شدن
- آموزش ساخت Extension برای ویژوال استودیو همراه با Project Template
- آموزش کار با انیمیشن در نرم افزار Blend
- آموزش ساخت برنامه های WPF بر پایه net Core3 و Net 5
- آموزش خروجی گرفتن برنامه ها بدون وابستگی به دات نت و در یک فایل Exe بدون استفاده از کتابخانه (دات نت کور 3)
- آموزش ایجاد پروژه های Shared
- آموزش symbol ها مخصوص بیلد کردن با configuration های مخصوص
- آموزش symbol های #if
قدم سوم : ارتباط با دیتابیس
سطح آموزش: متوسط (4 جلسه آموزشی)
- آموزش کار با دیتابیس به روش Code First و EntityFrameWork Core
- آموزش استفاده از Task ها و async / await همینطور cancel کردن task ها
- آموزش روش Generic Repository
- آموزش برنامه نویسی موازی Parallel
قدم چهارم : آشنایی با کنترل های سفارشی
سطح آموزش: پیشرفته (22 جلسه آموزشی)
- آموزش ساخت Custom Control (انتخاب کلاس پایه، Override کردن Metadata)
- آموزش ساخت Speedometer (مشاهده در تصویر زیر)
- آموزش ساخت RadialProgressbar
- آموزش ساخت صفحه دارت همراه با انیمیشن (مشاهده در تصویر زیر)
- آموزش Bundle کردن بسته Custom Control
- آموزش ساخت ساعت آنالوگ همراه با عقربه (مشاهده پروژه در تصویر زیر)
- آموزش ایجاد پروژه های MultiTarget
- آموزش استخراج template کنترل ها
- آموزش Presenter ها (ContentPresenter، ItemsPresenter)
- آموزش DataBinding در CustomControl
- دسترسی به المنت های ResourceDictionary در کلاس کنترل
- آموزش DependencyProperty (ایجاد پراپرتی برای کنترل)
- آموزش ReadOnlyProperty
- آموزش CollectionType و iList
- آموزش ایجاد AttachedProperty
- آموزش ایجاد RoutedEvent
- آموزش ایجاد Theme و پوسته
- حل مشکل DesignTimeResource
- استفاده از CustomControl های متن باز و آماده
قدم پنجم : شیرجه عمیق به MVVM Prism
سطح آموزش: پیشرفته (17 جلسه آموزشی)
- آموزش استفاده از معماری MVVM به کمک Prism
- ایجاد CustomRegionAdapter
- آموزش کار با View ها
- آموزش ایجاد ماژول
- آموزش رجیستر کردن CustomViewModel
- آموزش DelegateCommand
- آموزش IEventAgregator
- آموزش Navigation بین View ها
- آموزش ارسال پارامتر بین View ها
- آموزش IDialogService
- آموزش استفاده از ListBox، ComboBox و… در MVVM
- آموزش ایجاد SplashScreen واقعی بارگذاری تا زمانی که برنامه بطور کامل اجرا شود
- آموزش استفاده از TabControl در MVVM
قدم ششم : به کارگیری آموخته ها در عمل
سطح آموزش: پیشرفته و تجربی (12 جلسه آموزشی)
- آموزش ایجاد CircularProgressbar همراه با انیمیشن
- آموزش ایجاد برنامه دریافت اطلاعات مربوط به کرونا ویروس (آمار مربوط به مبتلایان، مرگ و میر، مشکوک و…) همراه با نمودار بصورت MVVM
- آموزش ایجاد نرم افزار HandySub برای دانلود زیرنویس از سایت محبوب Subscene و دریافت اطلاعات مربوط به فیلم و سریال از سایت IMDB
- آموزش ایجاد رابط کاربری و نرم افزار برای پلتفرم جدید مایکروسافت به اسم winget به نام HandyWinget برای نصب انواع از نرم افزار
- آموزش کار با API و ارسال و دریافت اطلاعات
- آموزش کار با HtmlAgilityPack برای تجزیه کردن تگ های Html و استخراج اطلاعات از صفحات وب
- نرم افزار کرونا ویروس در تصویر زیر مشاهده میکنید.
دوره آموزش WPF مناسب چه افرادی است
- افرادی که نیاز به یادگیری آخرین تکنولوژی ها و متدها دارند.
- کسانی که میخواهند به دور از پیچیدگی و در کمترین زمان ممکن تمام موارد مربوط به WPF را به زبان فارسی یاد بگیرند.
- کسانی که نیاز به طراحی رابط کاربری زیبا دارند.
- افرادی که میخواهند از Winform به WPF کوچ کنند.
- افرادی که میخواهند از دات نت فریمورک به Net Core3 دات نت کور3 کوچ کنند.
- افرادی که میخواهند کدهای خود را بدون نوشتن Event کنترلها پیادهسازی کنند.
- کسانی که به دنبال ساخت نرمافزارهای ریسپانسیو هستند.
- افرادی که به دنبال یادگیری طراحی کنترلهای سفارشی هستند.
- کسانی که نیاز به یک نرمافزار سریع و بدون هنگ دارند. (کار با task ها و برنامهنویسی async)
- کسانی که نیاز به نرمافزارهای باکیفیت و حرفهای دارند.
- اگر شما هم علاقهمند به کسب درصدی از بازار جامعه برنامهنویسی هستید.
- اگر به دنبال آشنایی با بهترین روشها و تکنولوژیها برای تولید نرمافزار هستید.
M.j.javadi1387 دانشجوی دوره
سلام میشه یک دوره آموزش خوب برای linq معرفی کنید
سید مهدی حسینی قیداری
در همین سایت جستجو کنید
M.j.javadi1387 دانشجوی دوره
سلام
آیا در این دوره از linq یا ado.net استفاده کرده اید؟
لطفاً از هرکدام از این مواردی که استفاده کرده اید یک منبع آموزش خوب معرفی کنید.
با تشکر از مدرس گرامی
سید مهدی حسینی قیداری
سلام از Linq استفاده شده ولی از ADO که منسوخ شده استفاده نشده!
M.j.javadi1387 دانشجوی دوره
سلام
آیا در این دوره از linq یا ado.net استفاده کرده اید؟
لطفاً از هرکدام از این مواردی که استفاده کرده اید یک منبع آموزش خوب معرفی کنید.
با تشکر
سید مهدی حسینی قیداری
قبلا پاسخ داده شد
KhosroGhasemi دانشجوی دوره
سلام. ببخشید یه سوال داشتم. من برای تغییر زبان برنامه به روش استاتیک، وقتی برنامه رو اجرا میکنم و زبان رو تغییر میدم و برنامه بشته میشه مجدد و به صورت خودکار بالا نمیاد و باید به صورت دستی مجدد برنامه رو ران کنم. البته در ران مجدد زبان برنامه عوض شده. در حالیکه اگه یه جایی از خط برنامه break point بذارم و با F10 جلو برم برنامه میاد بالا و زبانشم تغییر کرده. علت چیه؟
سید مهدی حسینی قیداری
سلام دلایل متفاوتی ممکنه داشته باشه، نسخه های مختلف دات نت، نقص در عملکرد ویندوز، و اینکه بعد از رستارت خودکار برنامه اصولا برنامه از دیباگر دی اتچ میشه فک نکنم بشه دیباگش کرد.
بهتره برنامه رو خارج از ویژوال استودیو و در حالت ریلیز تست بگیرید.
KhosroGhasemi دانشجوی دوره
سلام
در حالت ریلیزهم همین اتفاق میفته و برنامه پس از بسته شدن مجدد باز نمیشه. وقتی وقتی با دبل کلیک مجدد بازش میکنم تغییر زبان اتفاق افتاده
M.j.javadi1387
سلام من یک پروژه ایجاد کردم
برای ارائه باید فیلمی از آن تهیه کنم
میشه یک نرم افزار برای ضبط معرفی کنید؟
خودتان از چه نرم افزاری استفاده می کنید؟
سید مهدی حسینی قیداری
Camtasia
M.j.javadi1387
سلام پیشنیاز های این دوره چیست؟
سید مهدی حسینی قیداری
سلام پیشنیاز ندارد. اما اشنایی با سی شارپ مفید است.
lnxdx.acm
به نظرم بهتره شما اول خودتون C# رو خوب یاد بگیرید، بعد تدریس کنید. اینطوری وقت مردم هم گرفته نمیشه. توی فیلم آموزشی جای آزمون و خطا نیست که ببینیم فلان دستور کار میکنه یا نه یا دنبال چیزی بگردیم. انگلیسیتونم خیلی ضعیفه.
armanwollf007 دانشجوی دوره
دقیقا موافقم با نظرتون اصلا خوب نبود
yashar.dev دانشجوی دوره
با سلام .
چطوری میشه با مدرس دوره در ارتباط بود؟؟؟
pourya.nejadensan
با سلام
داخل سایت چند مورد آموزش وجود داره و من الان نمیدونم کدوم آموزش بدرد من میخوره اما مواردی که من بهش نیاز دارم این هست که پروژه حتما از طریق WPF و الگوی MVVM پیاده سازی بشه و همینطور در پروژه از ProgressBar و نحوه پیاده سازی اون در الگوی MVVM استفاده بشه همینطور استفاده از DataGrid به صورت پویا هم استفاده بشه حالا با این تفاسیر شما کدام دوره رو پیشنهاد میکنید از بین دورهایی که دارین باتشکر
pourya.nejadensan
من یک مورد رو فراموش کردم در مورد ProgressBar نحوه استفاده به این صورت میخواستم باشه که مثلا ما باید یک کوری سنگین رو دیتا بیس بزنیم و توی این مدت که برنامه در گیر هست میخواستم که ProgressBar میزان درصد عملیات رو نشون بده که به صورت پویا هست مثلا شاید روی یک سیستم پنج دقیقه باید منتظر بود و یا روی یک سیستم ده دقیقه
عماد
ممنون از آموزش های خوبتون . واقعا خسته نباشید
soheylakazemi
خواهش میکنم ، خیلی خوشحالیم که راضی بودید
احسان صفوی
سلام . به نظرم آموزش جامع و مناسبی بود. همه موارد مرتبط با استایل نویسی و تمپلت نویسی خیلی کاربردی توضیح داده شده بودند.ممنون از آموزش های خیلی جالب و آموزنده تون
soheylakazemi
سلام ممنون از شما دوست عزیز خیلی خوشحالیم که براتون کاربردی بوده
رضا جعفری
سلام من آموزش WPF را به همراه آموزش جامع و پیشرفته کتابخانه RxJS خریداری کردم. هر دو بسیار جامع و مفید بودند . به نظرم در کنار هم کارایی دارند . از وقتی شروع به استفاده کردم حس خودم اینه که کارم بهتر پیش میره .
سعید
· سلام و درود بی کران بر شما واقعا خسته نباشید من مدت ها بود در مورد این دوره انواع کتاب ها را می خوندم اما مطالب برام گنگ بود. در این آموزش گذاشته بودید و توضیحاتی که داده بودید برای من مفید و آموزنده بود.
samirakazemifar0
ممنون از نظرتون دوست عزیز
shantash دانشجوی دوره
سلام جناب حسینی
من میخوام در پروژه خودم Geometry مربوط به IconElement را به یک متغیر (GeometryVariable) که در ViewModel تعریفش کردم Bind کنم. منتها نمیدونم که staticresource رو چطوری میشه Bind کرد اگر ممکنه راهنمایی بفرمایید. البته ViewModel را در فایل Xaml به صورت local بایند کردم ولی سیستم خطا میداد.
shantash دانشجوی دوره
سلام جناب حسینی
من میخوام در پروژه خودم Geometry مربوط به IconElement را به یک متغیر (GeometryVariable) که در ViewModel تعریفش کردم Bind کنم. منتها نمیدونم که staticresource رو چطوری میشه Bind کرد اگر ممکنه راهنمایی بفرمایید.
البته این راه را امتحان کردم ولی برنامه ViewModel من رو در local پیدا نکرد.
“`
.
.
“`
shantash دانشجوی دوره
سلام جناب حسینی
من میخوام در پروژه خودم Geometry مربوط به IconElement را به یک متغیر (GeometryVariable) که در ViewModel تعریفش کردم Bind کنم. منتها نمیدونم که staticresource رو چطوری میشه Bind کرد اگر ممکنه راهنمایی بفرمایید.
البته این راه را امتحان کردم ولی برنامه ViewModel من رو در local پیدا نکرد.
.
.
mojtabaaskaripour دانشجوی دوره
سلام وقت بخیر
استاد من در پروژم از HandyControl استفاده می کنم و خیلی ممنون بابت معرفی HandyControl در دوره و واقعا کار را برای توسعه خیلی راحت کرده.
فقط یه مشکلی که من دارم اینکه توی Storyboard نمی تونم از DynamicResource برای تغییر Background استفاده کنم و نرم افزار هنگ می کنه و خطا میده ولی جاهای دیگه مشکلی نداره…
قطعه کدی که من برای Storyboard نوشتم به شکل زیر هست :
ممنون میشم راهنمایی بفرمائید.
مجتبی
سلام و عرض ادب
چنانچه بخوام از سرویس دیالوگ prism در ویو استتفاده کنم (و نه در ویو مدل) چطور میشه اینکار را انجام داد؟
در viewmodel در قسمت ctor این سرویس را میگیرم و مقدار دهی می کنم و در استفاده مشکلی نیست ولی در قسمت ویو چطور اینکار را انجام بدم؟
سید مهدی حسینی قیداری
در کدهای سی شارپ همان ویو میتوانید در قسمت ctor مثل ویومدل سرویس رو دریافت و مقداردهی کنید
مهرداد افضلی
سلام جناب مهندس
من یک پروژه WPF با HandyControl MVVM نوشتم. با توجه به اینکه این پروژه رابط گرافیکی پلاگین یک برنامه هست میخواستم اون رو از داخل یک پروژه دیگه (MainProject) داخل همون Solution اجرا کنم. در اینجا با دو مسئله مواجهم.
1- با توجه به اینکه پروژه WPF من از نوع library نیست چطور میتونم اون رو تو پروژه اصلی استفاده کنم ؟
2- امکانش هست که پروژه WPF با NetCore باشه و MainProject با Net Framework ؟
شایان مقیمی
سلام استاد خسته نباشید
من یه نرم افزار دارم که توی Titlebar و درواقع MainWindow یه آیکون داره که در شرایط مختلف رنگ اون تغییر میکنه. من رنگ این آیکون رو Bind کردم و وقتی میخوام رنگ المان رو از MainWindowViewModel تغییر بدم هیچ مشکلی نداره. ولی وقتی از سایر ViewModel ها یا حتی از یک کلاس جداگانه میخوام رنگ این آیکون رو که Bind شده تغییر بدم راهی پیدا نمیکنم. اگه برای ای این مشکل راه حلی ارائه بفرمایید ممنون میشم.
سید مهدی حسینی قیداری
سلام یعنی چی راهی پیدا نمیکنم؟
احتمالا باید DataContext رو برای ViewModel موردنظر ست کنید تا ارتباط برقرار بشه
در پنجره Output اگر خطایی باشه دیده میشه
شایان مقیمی
من فکر میکردم DataContext فقط برای ViewModel مربوط به خود اون View استفاده میشه و از ViewModel های دیگه قابل دسترس نیست. به خاطر همین از EvevntAggregator استفاده کردم که کارم راه افتاد.
shantash دانشجوی دوره
سلام جناب حسینی
من برای نرم افزارم یه صفحه login به صورت Dialog طراحی کردم که شامل Email و Password کاربر هست. وقتی کاربر یک بار لاگین میشه Email و Password در دیتابیس ذخیره میشه و دفعه بعدی به صورت پیش فرض تو صفحه login نمیش داده میشه تا نیاز به وارد کردن مجدد نباشه. مقدار Email رو Bind کردم و از ViewModel تغییرش دادم ولی مقدار PasswordBox رو به دلایل امنیتی نمیشه Bind کرد به ViewModel.
مثالی که برای UnsafePassword در صفحه راهنمای HandyContrpol ارائه کردید این کار رو از طریق TextBox انجام میده ولی برای انجام عملیات نیازه که Password به ViewModel هم Bind بشه. ممنون میشم راهنمایی بفرمایید چطور این کار رو انجام بدم.
سید مهدی حسینی قیداری
سلام تا حالا چنین شرایطی برای من پیش نیومده برای همین از راه حل های استانداردش زیاد مطلع نیستم ولی یه کاری که شما میتونید انجام بدید این هست که از EventToCommand که داخل هندی کنترل موجود هست استفاده کنید و مقدار TextChanged رو دریافت کنید.
حالا در ویو مدل کامند مربوطه رو ایجاد کنید
حالا در متد OnChanged از طریق پراپرتی e شما میتونید اون متن تغییر یافته رو دسترسی پیدا کنید
mojtabaaskaripour دانشجوی دوره
سلام
استاد کاش یه راه ارتباطی مثل تلگرام با شما بود تا بتونیم باهاتون در ارتباط باشیم همچنین خیلی خوب میشد اگه یه گروهی تشکیل می دادید تا بتونیم توی گروه سوالات رو بپرسیم و از تجربه دوستان استفاده کنیم یا اگه همچین گروهی میشناسید ممنون میشم معرفی نمائید.
یه سوال دارم: یوزر کنترلی دارم که خودم ساختم و کلی ایونت و آپشن داره، و توی فرمها ازش استفاده می کنم این یوزرکنترل بنا به نیاز کاربر بارها و بارها توی فرم لود میشه و بعد از اتمام کار کاربر remove میشه، من برای بستن این یوزرکنترل از دستور زیر استفاده می کنم… آیا برای بستن این یوزرکنترلی که نسبتا سنگین هم هست همین قطعه کد کفایت می کنه و با این روش منابع ازاد میشه یا باید کار دیگه ای هم انجام بدم، در واقع از این نگران هستم که وقتی کاربر مثلا 10 ساعت با برنامه کار کنه و این یوزر کنترل هی ساخته میشه و remove میشه منابع سیستم هدر بره و حافظه خالی نشه!!! آیا باید برای آزادسازی منابع سیستم، غیر از remove کردن این یوزرکنترل، کار دیگه ای هم لازم هست انجام بشه یا همین کفایت می کنه.
کدی که برای حذف این یوزر کنترل استفاده می کنم:
(this.Parent as Canvas).Children.Remove(this);
ممنون
سید مهدی حسینی قیداری
سلام در مورد گروه متاسفانه امکانش نیست چون دوره خیلی وقته منتشر شده و بنده هم فرصت کافی در این خصوص ندارم.
کدی که استفاده کردید صحیح است اما خب بسته به کدهایی که نوشتید باید به نوعی این قضیه رو مدیریت کنید مثلا سعی کنید جاهایی که امکانش هست از using استفاده کنید، جاهایی که نیاز هست خودتون از GC استفاده کنید و منابع بی استفاده رو از رم پاک کنید، یوزرکنترلتون بصورت صحیح لایه بندی بشه و در صورت امکان از المنت های مناسب استفاده بشه مثلا برای یه کار ساده از یه کنترل پیچیده استفاده نشه
Mohammad355
سلام
نیاز هسن قبل از دیدن این دوره ، دوره “آموزش پروژه محور WPF – از صفر تا صد ” را دید؟
سید مهدی حسینی
سلام خیر نیازی به پیشنیاز ندارد
مجتبی
سلام استاد
من یوزر کنترلی دارم که شامل چند textbox بصورت افقی کنار هم هست که برای هر textbox تعدادی event و شروطی تعیین کردم.
حالا میخوام یه لیستی شبیه به datagrid داشته باشم که هر ردیفش را این یوزر کنترل بندازم و علاوه بر نمایش اطلاعات داخل این دیتاگرید، قابل ویرایش هم باشه…
من برای این کار از itemscontrol استفاده کردم ولی اشکال اینجاست که وقتی میخوام این فرم را لود کنم اگه مثلا تعداد ردیفها 50 تا ویا بیشتر باشه خیلی طول میکشه تا لود بشه و وقتی تعداد از 100 ردیف بیشتر بشه بصورت تصاعدی این زمان بیشتر میشه چون برای هر ردیف یه یوزرکنترلی ساخته میشه که خودش شامل کلی شروط و event هست و این باعثتاخیر زیاد در لود میشه ….
خواستم راهنمایی کنید که روش بهینه ی اینکار چی هست؟ آیا باید از دیتاگرید استفاده کنم؟ اگه از دیتا گرید استفاده کنم می تونم برای هر سلول event خاص خودش را ایجاد کنم و شروطی را براش در نظر بگیرم؟
در واقع چیزی که من میخوام شبیه یک فاکتور فروش هست که تعداد ردیفش گاهی اوقات زیاد میشه و میخوام کاربر بتونه علاوه بر اینکه توی این فاکتور بصورت مستقیم تایپ میکنه و فاکتور را ذخیره می کنه، بتونه فاکتورهای ثبت شده ی قبلی را لود کنه که موقع لود سرعتش پایین نیاد.
از وقتی که می گذارید ممنونم.
سید مهدی حسینی
سلام بله شما میتونید از دیتاگرید استفاده کنید بصورت پیشفرض خود دیتاگرید چک باکس، کمبوباکس رو داره اگر نیاز به کنترل های دیگه دارید میتونید از DataGridTemplateColumn استفاده کنید و کنترل دلخواهتون رو داخلش قرار بدید. متاسفانه ItemsControl کنترل تمپلت پیشفرضش از اسکرول ویو پشتیبانی نمیکنه برای همین امکان استفاده از ویرچوالیزیشن رو نداره واسه همین فکر نمیکنم راهی باشه که بتونید شرایط رو بهتر کنید، بهترین راه استفاده از گرید هست
pesaredarya
بخش چهارم قسمت سوم مشکل صدا داره و چیزی شنیده نمیشه
سید مهدی حسینی
سلام تست کردم مشکلی نبود احتمالا فایل رو ناقص دانلود کردید
pesaredarya
بخش چهارم – قسمت سوم – آموزش ساخت Speedometer بصورت Custom Control
مشکلی نبود؟!!!!
دوست عزیز دانلود ناقص که صدارو ضعیف نمیکنه!
من دانلود نمیکنم,آنلاین ویدئو ها رو میبینم
این قسمت صدا خیلی خیلی ضعیف و نا مناسب
سعید
سلام وقت بخیر
سیستم من قدیمی حداکثر vs2012 قابل نصب هست، این مساله برای استفاده کامل از این دره مشکل ساز خواهد بود؟
سید مهدی حسینی
سلام برخی از فصول مشکلی با vs2012 ندارند ولی مباحث Net Core نیاز به اخرین نسخه ویژوال استودیو دارند.
rezastar
با سلام
ببخشید کدوم یک از این پروژه ها که در آخر نوشتید با mvvm کد زدید؟
سید مهدی حسینی
سلام فصل اخر تمام پروژه ها با MVVM کد نویسی شده
HandySub
HandyWinget
CoronaVirus
مجتبی
سلام و عرض ادب
استاد ببخشید یه سوال در مورد منطق mvvm دارم.
می یه view دارم که بصورت داینامیک المنتهایی بهش اضافه یا کم میشن … که این حذف و اضافه کردن المنتها را توی viewmodel انجام میدم … درواقع بر اساس دیتایی که توی viewmodel دارم تصمیم میگیرم که چند المنت و با چه مقادیری توی ویو قرار بگیرن… حالا سوالم اینه که ایا به لحاظ معماری و منطق mvvm این درسته که من توی viewmodel المنتها و مقادیرشون را به ویو اضافه ویا کم کنم ؟
در واقع به لحاظ منطق mvvm این درست هست که از طریق viewmodell المنتهای ویو را حذف و اضافه کنیم ؟ اگه درست نیست لطفا روش اصولی را بفرمائید.
ممنونم
سید مهدی حسینی
سلام اگر منظورتون از المنت UIElement هست، انجام این کار در viewmodel اشتباه هست viewmodel فقط وظیفه تهیه داده هارو بر عهده داره برای انجام این کار میتونید کدهارو در Code-Behind اون View بنویسید. به عنوان مثال اگر اسم view شما AddUser.xaml باشه شما میتونید کدهارو در AddUser.xaml.cs بنویسید.
mojtabaaskaripour
استاد ممنون…
ببینید در واقع من یه usercontrol دارم که توی view قرار میدم … از طرفی تعداد این usercontrol و محتویاتش براساس لیستی که توی viewmodel دارم بدست میاد و از اون لیست تشخیص میدم چه تعداد از این usercontrol ها را با چه محتویاتی داخل view بچینم … این تعداد usercontrol رو از توی viewmodel باید به view تزریق کنم؟ یا از Code-Behind اون view؟
اگه پاسخ Code-Behind هست چطوری به تعداد و محتویات اون لیست از usercontrol ها که توی viewmodel هست دسترسی پیدا کنم؟
ضمنا من از prism استفاده می کنم.
ممنون
سید مهدی حسینی
داخل کدهای ویو یه instance ایجاد کنید
internal static View1 Instance;
و در متد سازنده اون رو برابر this قرار بدید
Instance = this;
بعد یه تابع پابلیک ایجاد کنید که قراره یوزرکنترل رو ایجاد کنه و به عنوان ورودی هم مقدار یوزرکنترل رو دریافت کنید
public void GenerateUC(int number)
حالا داخل ویومدل هرجاکه نیاز شد یوزرکنترل ایجاد کنید میتونید به ویو وصل بشید و تابع جنریت رو صدا بزنید
View1.Instance.GenerateUC(10);
از این روش هم خوشتون نیومد از متد Event Aggregator پریسم میتونید استفاده کنید
https://prismlibrary.com/docs/event-aggregator.html
mojtabaaskaripour
ممنون استاد که وقت گذاشتید…
استاد یوزر کنترل من شامل event هایی هست که خودم براش ساختم که براساس این eventها دیتا باید تغییر کنه و آپدیت بشه … حالا وقتی من از طریق روشی که شما راهنمایی فرمودید که از داخل ویو این یوزر کنترل را به به لیستم اضافه می کنم، چطوری توی viewmodel از اجرای eventها مطلع بشم و توابعی را صدا بزنم؟
در واقع میخوام eventهای یوزر کنترل را به commandها bind کنم ولی یوزر کنترلها از توی فایل سی شارپ ویو جنریت میشن و توی xaml نیستن که eventها را به commandها bind کنم
rezastar
با سلام و خسته نباشید جناب استاد گرامی
خیلی ببخشید من یه سوال دارم کلی تحقیق کردم به جواب نرسیدم ممنون میشم کمک کنید من اون api واسه کرونا رو استفاده میکنم مشکلی ندارم ولی وقتی مثلا از این Api استفاده میکنم https://api.codebazan.ir/arz/?type=tala این ارور رو میبینم
System.Net.Http.HttpRequestException: ‘The SSL connection could not be established
استاد اگه واقعا علت رو میدونید لطفا راهنمایی کنید با سپاس
سید مهدی حسینی
سلام من با این کد تست کردم هیچ مشکلی نداشت و اطلاعات دریافت شد
HttpClient http = new HttpClient(clientHandler);
var res = await http.GetAsync(“https://api.codebazan.ir/arz/?type=tala”);
string json = await res.Content.ReadAsStringAsync();
Debug.WriteLine(json);
با اینحال اگر بازم مشکل دارید میتونید کد زیر رو تست کنید تا ssl رو بایپس کنه
HttpClientHandler clientHandler = new HttpClientHandler();
clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; };
HttpClient http = new HttpClient(clientHandler);
var res = await http.GetAsync(“https://api.codebazan.ir/arz/?type=tala”);
string json = await res.Content.ReadAsStringAsync();
Debug.WriteLine(json);
rezastar
استاد بازم کار نکرد همه روش هارو امتحان کردم واقعا نمیدونم مشکل از چیه آخه چرا باید api کرونا ران بشه منتها این یکی نه؟استاد مشکل از ورژن ویندوز میتونه باشه؟ مال من 8.1 هستش یا از لپتاپ؟
سید مهدی حسینی
تنها چیزی که به ذهنم میرسه نسخه دات نت هست که دارید استفاده میکنید سعی کنید از اخرین نسخه استفاده کنید من روی دات نت 5 تست کردم و مشکلی نبود، احتمال داره نسخه دات نتی که استفاده میکنید این مشکل رو داشته باشه/
سید مهدی حسینی
این کد رو هم تست کنید در فایل app.xaml.cs در متد ctor (سازنده) قرار بدید
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
rezastar
سلام و خسته نباشید
ببخشید اون قسمتی که پروژهدات نت کور رو پابلیش میکنیم اگه پروژه دیتابیس داشته باشه اونم اتچ میشه یا نه؟و اگه همین فایل هارو ببریم رو سیستم مشتری پروژه کار میکنه؟منظورم اینه یه چیزی شبیه فایل ستاپ هستش؟ممنون
سید مهدی حسینی
سلام در مورد پابلیش دات نت کور، اگه گزینه Self-Contained رو انتخاب کنید تمام فایل های موردنیاز برای اجرا در کنار فایل اجرایی قرار میگیره ینی دیگه نیازی به نصب دات نت و… روی سیستم مشتری نیست. در خصوص دیتابیس بستگی داره کانکشن استرینگ داخل برنامه چطوری تعریف شده باشه.
rezastar
بقیه قسمت ها چطور استاد؟مثلا entity core یا mvvm
سید مهدی حسینی
سرفصل تمامی موارد اموزش داده شده در سایت موجود هست مطالعه کنید و در صورتی که طبق نیاز های شما بود دوره را تهیه کنید.
rezastar
با سلام و خسته نباشید
ببخشید استاد هر بخش که آموزش داده شده مثلا آموزش گیت به صورت کامل توضیح داده شده یا نیاز هست مثلا یه دوره یا آموزش دیگه در رابطه با گیت ببینیم؟ممنون
سید مهدی حسینی
در خصوص گیت تا حدی اموزش داده شده که شما بتونید از عهده مسائل مختلف بر بیاید ولی برای موارد پیشرفته تر نیاز هست که دوره مخصوص برای گیت تهیه کنید.
arshia
سلام پیش نیاز های دوره چیه؟
سید مهدی حسینی
سلام نیاز به پیش نیاز ندارد.
md3848
فرق ListView و DataGrid در WPF :
https://stackoverflow.com/questions/4765080/difference-between-listview-and-datagrid-in-wpf
خب وقتی فرق این دو تا در بحث ویرایش هستش، خب به همون DataGrid یه Property بدن که قابلیت ویرایش رو فعال//غیرفعال کنه دیگه، چه نیازی به کنترل جدید بود؟ یکم گیج شدم، هرچی فک میکنم دلیل وجود listview رو نمیفهمم.
سید مهدی حسینی
تفاوت زیادی بینشون هست و اینکه لیست ویو نسبت به گریدویو سبکتر هستش
https://stackoverflow.com/a/21255674/11652257
md3848
فرق dispatchertimer با timer : تو timer نمیتونیم به ui به صورت مستقیم دسترسی داشته باشیم و باید از task استفاده کنیم اما تو dispatchertimer نیازی به استفاده از task نی، درست متوجه شدم؟ ممنون میشم اگه توضیح بیشتری درباره این دو تایمر ارائه بدید.
سید مهدی حسینی
دیسپچرتایمر، تایمر معمولی هستش که ایونت تیک رو روی ترد رابط کاربری اجرا میکنه شما میتونید هر کار مربوط به رابط کاربری رو انجام بدید ولی System.Timers.Timer یک تایمر Async هستش و روی ترد پول اجرا میشه شما نمیتونید روی رابط کاربری تغییرات رو اعمال کنید.
لطفا در مورد دوره اگر سوالی داشتید بپرسید این سوالات ارتباطی با دوره نداره
md3848
فصل 1 قسمت 21 درباره تایمر صحبت کردید، بقیه موارد رو هم گفتم که فرق این با اون چیه تو فصل 1 بودن، که سوال کردم، فقط اون سوال فتحه کسره تو دوره نبود که خارج از محتوی این دوره بود، در هر صورت ممنون بابت وقتی که گزاشتید و پاسخ هاتون و این آموزش، این آخرین پیام من در این مطلب هستش.
md3848
ممنون از پاسخ های شما
یه موردی، مبحث drag & drop به این آموزش اضافه میشه؟ مث ویندوز 10، قسمت تنظیماتش که میشه کنترلهاشو کم و زیاد کرد، جاهاشونو عوض کرد و …
https://s16.picofile.com/file/8418267726/2.png
( کاش قسمت آپلود تصویر رو برا قسمت نظرات سایت فعال کنید تا بشه مستقیم عکسی چیزی فرستاد )
سید مهدی حسینی
فعلا مشخص نیست انشالله ببینیم در اینده چی پیش میاد
md3848
یه سوال اساسی، فرق FlowDocumentPageViewer با RichTextBox چیه؟ یعنی کی از کدوم باید استفاده کنیم.
سید مهدی حسینی
سلام FlowDocumentPageViewer به جای اینکه مثل RichTextBox فقط برای متن های طولانی اسکرول بار رو فعال کنه، کل سند را به صفحات تقسیم میکنه. بصورت خلاصه شما با FlowDocumentPageViewer میتونید متن طولانیتون رو صفحه بندی کنید.
md3848
سلام، یه سوال، تو متون عربی که فتحه و کسره و … دارن، رنگ این اعراب رو چطور میشه تغییر داد؟ یعنی مثلا رنگ متن قرمز باشه و رنگ اعراب سبز؛ تو ورد میشه ( با هر فونتی )، تو اندروید استودیو هم اینطوری که دیدم میشه؛ اما تو wpf امکانش نی، یعنی دو کاراکتر “سُ” رو رنگشونو باهم تغییر میده، مجزا تغییر نمیده؛ خواستم ببینم برا حل این موضوع راهکاری هستش؟ یا این که هیچ کاریش نمیشه کرد؟
سید مهدی حسینی
سلام سوال شما ارتباطی به wpf نداره و مربوط میشه پردازش متن و باید توسط کدهای سی شارپ انجام بشه
md3848
بله صحیح، در کل خواستم ببینم شدنیه؟ چون هر چی سرچ کردم جایی رو ندیدم که با C# به نتیجه رسیده باشن، خواستم ببینم اگه شدنی نی راهکاری چیزی برا حل مشکل سراغ دارین؟ مثلا استفاده از LATEX،…نمیدونم، شاید هم عکس که ایده خوبی نی ولی خب ایدس :)
این مشکلو تو stackoverflow هم مطرح کردم، تو برنامه-نویس هم همینطور ولی …
https://stackoverflow.com/questions/65314128/wpf-applypropertyvalue-not-work-for-arabic-vowel-diacritics
سید مهدی حسینی
قطعا شدنیه و از طریق سی شارپ باید انجامش داد ولی بشخصه تجربه ای در این خصوص ندارم.
saied_cp
استاد خیلی ممنونم از این دوره عالیتون. خیلی مطالب جدید و خوبی یاد گرفتم. خیلی مفید بودن. ولی خدا وکیلی چند جا خیلی شیک و مجلسی مطلب رو پیچوندین. هر چند همین که اشاره کردین خودش خیلی عالی بود. در ضمن خدا وکیلی تلفظ بعضی از کلماتتون رو تو دوره های بعدی درست کنین. مثلا Detabase , Requaired , … .
“رکو ای رِد” چیه تورو خدا.
سید مهدی حسینی
سلام ممنون از شما
برخی موارد بحثش مفصل تر بود و اگر بطور کامل ورود میکردیم زمان دوره بیشتر میشد.
در مورد تلفظ کلمات هم بخاطر دانش کم من در زبان انگلیسی به بزرگی خودتون ببخشید.
انشالله توی دوره های بعدی بتونم این کمبود هارو جبران کنم.
saied_cp
خیلی ممنون از حسن توجهتون. مطالب دوره هم واقعا عالیه. فقط به دوستان توصیه می کنم هر جایی رو نفهمیدن از روش رد نشن. از جاهای دیگه هم جستجو کنن، تا مطالب پر بار شما پر بارتر بشه براشون انشالله.
علی
سلام وقت بخیر
این دوره تخفیف نداره تهیه کنیم؟
پشتیبان توفیق پور
سلام ممنونم
در این خصوص در قسمت چت آنلاین پیغام بگذارید.
rez
سلام
یه سوالی دارم میشه برنامه پایتونی رو با WPF ادغام کرد
واینکه WPF رو میشه تو سایت های ASPبکار برد
سید مهدی حسینی
سلام
چون برنامه های پایتون بصورت اسکریپت هستن تا حدودی شما میتونید اسکریپت رو توسط پروسس ها و لینک به برنامه پایتون اجراش کنید اما اینکه بصورت مستقیم داخل wpf کد پایتون بنویسید و کنترلش کنید ممکن نیست!
https://stackoverflow.com/questions/41024083/adding-a-python-script-to-my-wpf-application-not-embedded
در خصوص استفاده از wpf در asp باید بگم که امکان پذیر نیست چون wpf برای ایجاد اپلیکیشن های دسکتاپ هست و asp برای ایجاد اپلیکیشن وب و هردو تکنولوژی متفاوتی هستن
tn.mohsen
سلام . برای شروع این دوره چقدر باید با سی شارپ آشنا بود .
و اینکه ای کاش برای دوره ها یک گروه رفع اشکال تلگرام میزدید .
متشکر
سید مهدی حسینی
سلام اشنایی ابتدایی با سی شارپ کافیست (بدون اشنایی هم میتونید کار رو پیش ببرید در طول دوره تا حدودی با سی شارپ اشنا میشید)
mr.mrk
سلام.این دوره رو بگیریم دوره قبلی نیازی به تهیه نداره یعنی تمامی مباحث اونها رو هم شامل میشه ؟
سید مهدی حسینی
سلام بله تمام مباحث دوره های قبل رو هم شامل میشه کامل تر هم هستش
بهرام
سلام و خسته نباشید
واقعا ممنونم از شما و مدرس عزیز بابت این دوره فوق العاده کاربردی من سالهای زیادی برنامه نویسی wpf انجام دادم به تازگی تصمیم گرفتم خودمو اپدیت کنم و آموزش های زیادی دیدم ، مهندس واقعا کاربردی و عالی با یک سرفصل خوبو کیری آموزش رو شروع کردن و توضیح دادن که جای تشکر داره بسیار کمکم کرد و باعث پیشرفت بود
این دوره کامل تر از دوره های قبلی هست
موفق باشید
mojtabaaskaripour
سلام
استاد عزیز تخفیفی برای این دوره در نظر نمیگیرید ؟
سید مهدی حسینی
سلام انشالله در هفته های آتی باز هم تخفیف درنظر گرفته میشه
mojtabaaskaripour
ممنون استاد …
البته من دیگه دوره را بدون تخفیف تهیه کردم.
kurosh6466
سلام سید عزیز ، آففففرین این شد آموزش کمیاب و به درد بخور . درود به شرفت . آموزش فففوق العاده کار آمد و پر نکته و کاملاً مفید .
Yahya.Hosseini
سلام
دوستان تو خرید این دوره شک نکنید . خدایش بهترین اموزشی بود که تا حالا خریدم
تشکر از استاد محترم بابت اموزش محشرشون
sarina485
سلام
جناب آقای حسینی
واقعا متشکرم من تقریبا تموم سایت ها رو برا wpf می گردم هیچ کس مثل شما و سایت toplearn آموزش نمی ده
لطفا مثال های بیشتری رو به صورت فیلم آموزشی و کد هایی که کاربردی هستن بزارین
مثل کار با دیتاگرید ، کار با دیتابیس و…
مخصوصا کارهایی که باید موقع تحویل پروژه به مشتری انجام داد مثل آپدیت برنامه، آپدیت دیتابیس ، نصب برنامه به صورت سایلنت و از این قبیل کارها که به نظرم میشه یه دوره خاص هم براش برنامه ریزی کنین واقعا مورد نیازه
بازم ممنونم
سید مهدی حسینی
سلام ممنون بابت پیشنهادات خوبتون
انشالله در دوره های آتی حتما درنظر میگیرم.
اشکان
با سلام
دوره عالی بود
بسیار کمکم کرد و باعث پیشرفت بود و
کسی میخواد خریدار ی کنه شک نکنه به این دوره
و اگر میخواد شک کنه مهم نیست
بازم ممنونم از شما استاد مهربان و دلسوز
ممنون از سایت خوبتون
نازی گوگولی
ممنون از شما استاد گوگولی
sanaz
عالی بود ممنون استاد
hos3ein
سلام ببخشید اونایی که اون دوره های قبل رو خریدن بازم نیازه این دوره رو تهیه کنن؟ یا نه؟
سید مهدی حسینی قیداری
سلام بله این دوره کامل تر از دوره های قبلی هست و مباحث جدیدتری مثل MVVM Prism، آموزش ساخت کاستوم کنترل و… داده شده هم شامل دوره های قبلی هست (البته با روش های بهتر و جدیدتر) هم شامل مباحث جدید
مهدی روحانی
سلام
وقت بخیر
این دوره به پیش نیاز خاصی نیاز داره؟
سید مهدی حسینی
سلام خیر دوست عزیز نیاز به پیش نیازی نداره