هیچ دوره ای در سبد خرید شما وجود ندارد
معرفی
در این آموزش شما با 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)
- کسانی که نیاز به نرمافزارهای باکیفیت و حرفهای دارند.
- اگر شما هم علاقهمند به کسب درصدی از بازار جامعه برنامهنویسی هستید.
- اگر به دنبال آشنایی با بهترین روشها و تکنولوژیها برای تولید نرمافزار هستید.
Behzad Ahmadi دانشجوی دوره
از توضیحات زیبا و تلاشتون ممنونم و همچنین از صبرتون در توضبح مسایل
سید مهدی حسینی مدرس دوره
سپاس از لطف شما
saeid.72
سلام وقتتون بخیر،با توجه به اینکه این دوره چند سالی از انتشارش میگذره ،ایا مباحث روز رو شامل میشه ؟ایا اپدیت شده و نیازی نیست دوره جدیدتر رو تهیه کنیم ؟
سید مهدی حسینی مدرس دوره
سلام بله
میتونید سرفصل رو مشاهده کنید و درصورتی که منطبق بر نیازهای شماست دوره رو تهیه کنید
محمد مهدی شفیعی دانشجوی دوره
دوره بدی نیست
مباحث کامله اما استاد تسلط 100 درصد روی مبحث ها نداره و یه جاهایی باعث سردرگمی می شه و این خیلی بده
مثلا با ارور مواجه می شن و با آزمون و خطا ارور رو بر طرف می کنن و این اتفاق باعث می شه کسی که داره یاد می گیره مبحث رو متوجه نشه
در کل دوره بدی نیست به عنوان رفرنس
سید مهدی حسینی مدرس دوره
ممنون از نظر شما
سعی میکنیم در دوره های اینده مشکلات موجود رو برطرف کنیم
M.j.javadi1387 دانشجوی دوره
سلام من حدود۶ ماه پیش دوره wpf شما رو تموم کردم و پس از اون هم چند تا پروژه انجام دادم
الان حدود ۲ یا ۳ ماه هست که اصلاً با سی شارپ کار نکردم و بعضی مطالب را فراموش کردم
برای اینکه مطالب فراموش شده را در کمترین زمان دوباره یاد بگیرم چه پیشنهادی دارید؟
سید مهدی حسینی مدرس دوره
سلام! خوشحالم که دوره WPF ما برای شما مفید بوده و پروژههای موفقی انجام دادهاید. برای بازیابی و تقویت مطالب فراموش شده سیشارپ در کمترین زمان، میتوانید از روشهای زیر استفاده کنید:
1. **مرور مستندات و منابع اصلی**:
– مستندات رسمی Microsoft Docs برای سیشارپ و WPF بهترین منبع هستند. میتوانید از این منابع برای مرور مفاهیم اصلی استفاده کنید.
2. **تمرینهای کوچک و پروژههای کوتاه**:
– ایجاد پروژههای کوچک و تمرینهای ساده به شما کمک میکند تا مطالب را سریعتر بازیابی کنید.
3. **مرور کدهای قبلی**:
– پروژههایی که قبلاً انجام دادهاید را مرور کنید. این کار به شما کمک میکند تا نحوه پیادهسازی مفاهیم را به یاد بیاورید.
4. **شرکت در انجمنها و گروههای برنامهنویسی**:
– انجمنهای برنامهنویسی مانند Stack Overflow، Reddit، و GitHub میتوانند منابع خوبی برای پرسش و پاسخ و تبادل اطلاعات باشند.
5. **کار روی یک پروژه عملی**:
– شروع یک پروژه عملی جدید یا همکاری در یک پروژه متنباز میتواند شما را با چالشهای واقعی روبرو کند و به یادگیری عمیقتر کمک کند.
محمد رضا هرمزی
سلام و عرض ادب خدمت استاد گرامی
استاد قبل از تهیه دوره تون می خواستم بپرسم که آیا در این دوره آموزشی برای انتقال اطلاعات بین یوزر کنترل ها هم آموزشی دارید؟بطور مثال یک پنجره فرعی باز هست و بعد از زدن دکمه تایید و بسته شدن پنجره فرعی داده هایی در چند تکست باکس در یوزر کنترلی که در پنجره اصلی قرار دارند بلافاصله تغییر کنند؟؟؟
سید مهدی حسینی مدرس دوره
سلام بله ویدئوی زیر رو مشاهده بفرمایید. البته صد در صد چیزی که شما میخواید نیست ولی راه انتقال اطلاعات بین کلاس ها رو توضیح دادیم. کلی راه برای این کار وجود داره و ویدئوی زیر یک نمونه هست.
آموزش WPF مقدماتی تا پیشرفته و پروژه محور – دانشجویار – دانشجویار (daneshjooyar.com)
miladakrami1997 دانشجوی دوره
سلام استاد وقتتون بخیر من چند سوال در رابطه با wfp داشتم راه ارتباطی هست که بتونیم در تلگرام یا واتس باهاتون ارتباط برقرار کنیم و مشکلاتمون رو برطرف کنید؟
من دارم روی پروژه دانشگاهی کار میکنم که نیاز به unity و wpf دارم
سید مهدی حسینی مدرس دوره
سلام بنده تجربه ای در رابطه با unity ندارم اگر سوالی از wpf دارید همینجا مطرح کنید در حد توان پاسخگو خواهم بود
M.j.javadi1387 دانشجوی دوره
سلام
در handy control كنترل DataGrid براي عوض كردن رنگ item ها بايد از چه پراپرتي استفاده كرد
سید مهدی حسینی قیداری مدرس دوره
سلام دیتاگرید در هندی کنترل فقط یک استایل ساده هست و کنترل جدیدی نیست. لذا شما هرکاری که برای تغییر رنگ در دیتاگرید معمولی قبلا انجام میدادید رو هم اینجا میتونید استفاده کنید.
M.j.javadi1387 دانشجوی دوره
سلام
من handycontrol رو از طریق فایل vsix روی ویژوال استودیو 2019 نصب کردم
فایل نصب شد
وقتی که پروژه از نوع handycontrol ایجاد میکنم در فایل های پروژه خطا میده.
لطفاً راهنمایی کنید
سید مهدی حسینی قیداری مدرس دوره
مشکل مربوط به ویژوال استودیو است
M.j.javadi1387 دانشجوی دوره
سلام
من handycontrol رو از nuget manager روی ویژوال استودیو نصب کردم
وقتی ویژوال استودیو رو باز می کنم و می خواهم پروژه جدید ایجاد کنم نوع پروژه handycontrol وجود ندارد
لطفاً راهنمایی کنید
سید مهدی حسینی قیداری مدرس دوره
مشکل مربوط به ویژوال استودیو می باشد.
M.j.javadi1387 دانشجوی دوره
سلام
من در wpf از کنترل hyperlink استفاده می کنم و پراپرتی navigateuri رو هم استفاده کردم
ولی وقتی که روی این کنترل کلیک می کنم مرورگر اجرا نمیشه و اتفاقی هم
نمی افته
سید مهدی حسینی قیداری مدرس دوره
رو ایجاد کنید و کد زیر رو بنویسید
جهت اطلاعات بیشتر به این صفحه مراجعه کنید
c# – Example using Hyperlink in WPF – Stack Overflow
M.j.javadi1387 دانشجوی دوره
سلام
من handycontrol رو روی ویژوال استودیو نصب کردم.
بعد از ایجاد پروژه handycontrol وقتی وارد محیط xaml می شوم
برنامه خطا میده و چند تا فایل رو پیدا نمیکنه
در قسمت dependency هم به handycontrol خطا میده.
پروژه های wpf این مشکل رو ندارن
لطفاً راهنمایی کنید
سید مهدی حسینی قیداری مدرس دوره
سلام طبق مستندات پیش برید.
Quick start | Ghost1372
اگر مشکل داشتید افزونه vsix نصب کنید و از تمپلت های اماده برای ایجاد پروژه استفاده کنید
HandyControl – Visual Studio Marketplace
Sadegh
سلام وقت بخیر مشکل پکیج CommunityToolkit.Labs.WinUI.TokenView چیه؟ لود نمیشه و توی ناگت هم پیداش نمیکنم
سید مهدی حسینی قیداری مدرس دوره
سلام فیدهای زیر رو در ویژوال استودیو و تنظیمات ناگت اضافه کنید.
https://pkgs.dev.azure.com/dotnet/CommunityToolkit/_packaging/CommunityToolkit-Labs/nuget/v3/index.json
https://pkgs.dev.azure.com/dotnet/CommunityToolkit/_packaging/CommunityToolkit-MainLatest/nuget/v3/index.json
M.j.javadi1387 دانشجوی دوره
سلام من یک مشکل دارم
در پروژه Handy sub وقتی اسم فیلمی رو جستجو میکنم خطای پیدا نشدن میده برنامه خودتون هم امنحان کردم همین اتفاق می افته لطفا راهنمایی کنید
من نام arrow رو جست و جو میکنم
سید مهدی حسینی قیداری مدرس دوره
سلام، 2 علت داره:
یا سرور سابسین مشغول هست و پاسخ نمیده، یا اینکه سایت تغییراتی داشته و این تغییرات روی کدهای جستجو اعمال نشده! برای همین پیشنهاد میکنم اخرین تغییرات کدها رو از این قسمت مشاهده و کپی کنید.
TvTime/dev/ViewModels/Subtitles/SubsceneViewModel.cs at main · WinUICommunity/TvTime (github.com)
بنده تست کردم و این کدها به خوبی کار می کنن
reza
سلام خسته نباشید
آموزشتون خیلی خوب هست. یه مشکل دارم چجور یه دیتاگردید داخل یه دیتاگرید دیگه رو بایند کنم. تو یه سلول یه دیتاگرید گذاشتم توجه کنید تو ردیف دیتاگرید نیست تو سلول هست این کدم هست. کار میکنه ولی دیتاگرید داخلی خالی میمونه.
M.j.javadi1387 دانشجوی دوره
سلام
ما چطور می توانیم API پیدا کنیم
مثلا شما چطور اون API رو برای پروژه CoronaVirus پیدا کردید؟
سید مهدی حسینی قیداری مدرس دوره
سلام تو اینترنت جستجو کنید میتونید api های رایگان پیدا کنید برخی دیگر هم پولی هستند
alirezagmilcom3 دانشجوی دوره
سلام و عرض ادب و خسته نباشید خدمت شما استاد گرامی
خیلی ممنون بابت این آموزش کامل و جامعی که ارئه دادین و فقط یک مسئله ای بود که به نظرم اون هم اگربشه یک آپدیتی چیزی بدین آموزش خیلی کامل تر میشه و اون هم مبحث Drag and Drop هستش
باز هم ممنونم از شما ایام خوش
سید مهدی حسینی قیداری مدرس دوره
سلام ممنون از نظر لطفتون
انشالله در فرصت مناسب حتما
M.j.javadi1387 دانشجوی دوره
یک مشکل دیگه هم هست .
پروژه Handy Control روی ویژوال استودیو 2019 کامپایل نمیشه.
چون vs 2019 از net 6 و net 7 پشتیبانی نمیکنه.
اگه میشه نسخه قدیمی رو به من بدید.
سید مهدی حسینی قیداری مدرس دوره
سلام نسخه قدیمی موجود نیست، اگر روی vs2019 مشکل دارید میتونید دات نت 6 و 7 رو بردارید، هندی کنترل از دات نت 4 تا 4.8 پشتیبانی میکنه
M.j.javadi1387 دانشجوی دوره
سلام آقای حسینی
من پروژه Handy Control رو بررسی کردم.
وقتی من خواهم برای button یک style در نظر بگیرم style های خود Handy Control از بین میره.
چطور می تونم Style های Handy Control رو تغییر بدم؟
لطفا راهنمایی کنید.
سید مهدی حسینی قیداری مدرس دوره
سلام هنگام استایل نویسی میتونید استایل های پیشفرض رو پایه قرار بدید یه همچین حالتی:
<Style TargetType=”button” BasedOn=”{staticresource somestyle}”
اسم استایل هارو هم باید از داخل سورس کد بررسی و پیدا کنید
M.j.javadi1387 دانشجوی دوره
کدوم کد ها؟
سید مهدی حسینی قیداری مدرس دوره
سورس کد هندی کنترل
M.j.javadi1387 دانشجوی دوره
سلام من یک مشکل دارم
من یک پروژه wpf .net core ایجاد کردم وقتی روی پروژه راست کلیک میکنم publish نیست.
لطفا راهنمایی کنید.
سید مهدی حسینی قیداری مدرس دوره
سلام احتمالا ایراد از Visual Studio باشه پیشنهاد میکنم کاملا حذف و دوباره نصب کنیدو از اخرین نسخه استفاده کنید
M.j.javadi1387 دانشجوی دوره
ممنون درست شد
alinouri1979 دانشجوی دوره
سلام وقت بخیر
استاد چگونه میتوان با استفاده از خاصیت TextChanged یک textbox در mvvm نمایش اطلاعات یگ گرید ویو یا لیست ویو را فیلتر نمود؟
سید مهدی حسینی قیداری مدرس دوره
سلام استفاده از اینتراکشن ها میتونه مفید باشه
یه همچین چیزی:
M.j.javadi1387 دانشجوی دوره
سلام من یک مشکل دارم وقتی تصویری رو در wpf .net core می گذارم تصویر در خود visual studio نمایش داده میشه ولی وقتی برنامه رو اجرا میکنم تصویر نمایش داده نمیشه.
در پروژه های wpf .net framework این مشکل نبود. لطفا راهنمایی کنید.
سید مهدی حسینی قیداری مدرس دوره
سلام قطعا مسیر فایل اشتباه هست
M.j.javadi1387 دانشجوی دوره
سلام مسیر فایل رو از قسمت properties انتخاب کردم و دستی وارد نکردم.
سید مهدی حسینی قیداری مدرس دوره
اطمینان حاصل کنید که Build Action تصویر به درستی تنظیم شده باشد. باید به ‘Content’ تنظیم شده باشد تا به عنوان یک منبع محتوا در هنگام اجرا در دسترس باشد.
M.j.javadi1387 دانشجوی دوره
سلام
متوجه شدم وقتی عکس رو به ویژوال استودیو اضافه می کنم باید به صورت itemgroupe به فایل برنامه اضافه بشه.
لطفاً راهنمایی کنید.
سید مهدی حسینی قیداری مدرس دوره
سلام عکس رو به پروژه اضافه کنید وارد فایل csproj بشید و itemgroup های مربوط به عکس رو پاک کنید برخی با عنوان remove هستن و برخی دیگه content یا سایر …
همه رو پاک کنید. بودنشون هم فرقی نمیکنه
خسرو
با سلام
توی دوره برای ساخت CustomControl فرمودید که میشه به جای استفاده از CustomControl ، یک کلاس و یک ResourceDictionary ایجاد کرد، با هر اسمی که خواستیم و بعد اینا رو با هم لینک کنیم. ولی توی ویژوال 2022 ظاهرا نمیشه این کار رو کرد. الان چند روز بود که میخواستم یک کاستوم کنترل با روش شما ایجاد کنم و نمیشد. در آخر متوجه شدم که باید حتما از همون فرمت مخصوص CustomControl استفاده کرد. یعنی اون قسمت ResourceDictionary باید حتما تحت نام Generic و در فولدر Themes ذخیره بشه. سوالی که دارم اینه که توی 2022 چطور میشه از همون روش شما استفاده کرد.
ممنون بابت راهنماییتون
سید مهدی حسینی قیداری مدرس دوره
سلام مدتی هست که با WPF کار نکردم اما هیچ مشکلی نباید با نسخه 2022 باشه و همه موارد باید مثل سابق کار کنه. احتمالا ویژوال استودیو شما ناقص نصب شده یا ورکلود های موردنیاز نصب نشدن، wpf توی سال های اخیر تغییر چندانی نداشته و دیکشنری ها هم مثل سابق هستن.
alinouri1979 دانشجوی دوره
سلام وقت بخیر
با استفاده از Prism در MVVM چگونه می توان با زدن یک دکمه از داخل یک window اطلاعات داخل گرید یک window دیگر را بازیابی یا رفرش کرد؟
سید مهدی حسینی قیداری مدرس دوره
ابتدا یک دستور (Command) برای دکمه در ویومدل خود ایجاد کنید. این دستور میتواند به تابعی در ویومدل متصل باشد که مربوط به بازیابی یا رفرش کردن اطلاعات گرید است.
public class MyViewModel : BindableBase
{
public DelegateCommand RefreshCommand { get; private set; }
public MyViewModel()
{
RefreshCommand = new DelegateCommand(Refresh);
}
private void Refresh()
{
// کد مربوط به بازیابی یا رفرش کردن اطلاعات گرید
}
}
حالا در ویو (View) خود، دکمهای ایجاد کنید که به این دستور متصل شود:
<Button Content=“Refresh” Command=“{Binding RefreshCommand}” />
برای ارتباط بین دو ویندو (یا دسترسی به ویومدل و گرید دیگر)، از Event Aggregation در Prism استفاده میکنیم. ابتدا یک رویداد برای درخواست رفرش ایجاد کنید:
public class RefreshRequestedEvent : PubSubEvent<string> { }
سپس در ویومدل اصلی یک نمونه از این رویداد ایجاد کنید و در تابع Refresh خود آن را منتشر کنید:
private void Refresh()
{
// کد مربوط به بازیابی یا رفرش کردن اطلاعات گرید
// منتشر کردن رویداد برای درخواست رفرش
_eventAggregator.GetEvent<RefreshRequestedEvent>().Publish(“Refresh requested.”);
}
حالا در ویومدل دیگر که شامل گرید دیگری است، از همان رویداد برای شنیدن درخواست رفرش استفاده کنید:
public class AnotherViewModel : BindableBase
{
public AnotherViewModel(IEventAggregator eventAggregator)
{
eventAggregator.GetEvent<RefreshRequestedEvent>().Subscribe(Refresh);
}
private void Refresh(string message)
{
// کد مربوط به بازیابی یا رفرش کردن اطلاعات گرید دیگر
}
}
با انجام این تغییرات، هر وقت دکمه Refresh در ویو اصلی فشرده شود، رویداد RefreshRequestedEvent منتشر میشود و سایر ویومدلها که به این رویداد مشترک هستند، اعمال مربوط به رفرش یا بازیابی اطلاعات خود را انجام میدهند.
M.j.javadi1387 دانشجوی دوره
سلام چطور از پروژه wpf خروجی بگیریم؟
سید مهدی حسینی قیداری مدرس دوره
راست کلیک روی پروژه و انتخاب publish
خسرو
با سلام
ممنون بابت دوره مفید و کاربردیتون. یه سوال داشتم خدمتتون. میخواستم ببینم توی Prism چطور میشه بیش از یک Module رو توی یک Content Region باز کنیم. مثل همین Visual Studio که توی صفحه اش، همزمان چندین View و کلاس و … فعال هستند، مانند Tab Control و با کلیک روی هر کدوم میتونیم اون رو فعال کنیم و یا با کلیک روی دکمه Close اون رو کلا ببندیم.
سید مهدی حسینی قیداری مدرس دوره
سلام احتمالا شما باید برای هر ماژول یک Region داشته باشید.
خسرو
با سلام
لطفا بفرمایید در MVVM برای Combobox چطور بدون استفاده از HandyControl هنگام SelectedChange مقادیر Combobox رو دریافت کنیم؟
سید مهدی حسینی قیداری مدرس دوره
سلام میتونید به این پروژه مراجعه کنید مثال های متنوعی وجود دارد.
MVVMPracticePrism/ComboBox.xaml at master · ghost1372/MVVMPracticePrism · GitHub
M.j.javadi1387 دانشجوی دوره
سلام آقای حسینی
فایل های پروژه هایی که گذاشتید در ویژوال استودیو من باز نمیشه و خطای زیر رو میده
one or more projects in the solution were not loaded correctly
سید مهدی حسینی قیداری مدرس دوره
سلام احتمالا بدلیل تفاوت نسخه ویژوال استودیو باشه ویژوال استودیو رو باز کنید و از قسمت File و Open Project فایل csproj پروژه رو انتخاب و باز کنید
M.j.javadi1387 دانشجوی دوره
سلام
امتحان کردم نشد
اگه میشه فایل های پروژه ها رو برام به صورت کامل بفرستید
منظورم با پوشه bin و ……..
سید مهدی حسینی قیداری مدرس دوره
بنده به فایل های پروژه دسترسی ندارم موارد لازم در همین دوره ضمیمه شده و سایر موارد در گیتهاب موجود هست.
M.j.javadi1387 دانشجوی دوره
میشه آدرس گیت هاب خودتون رو بدید
سید مهدی حسینی قیداری مدرس دوره
Your Repositories (github.com)
M.j.javadi1387 دانشجوی دوره
و همچنین از فایل ها خروجی نگیرید
M.j.javadi1387 دانشجوی دوره
سلام من یک مشکل دارم
در ویژوال استودیو من گزینه wpf(.net core) نیست و فقط wpf(.net framework) هست
لطفا راهنمایی کنید
سید مهدی حسینی قیداری مدرس دوره
سلام احتمالا نسخه های دات نت کور نصب نیست از اینجا نسخه های موردنظر را دانلود و نصب کنید
New tab (microsoft.com)
M.j.javadi1387 دانشجوی دوره
سلام من یک مشکل دارم
من برای یک دکمه border ایجاد میکنم
و border thickness رو هم روی 50 می گذارم ولی border ایجاد نمیشه
لطفاً راهنمایی کنید
M.j.javadi1387 دانشجوی دوره
سلام من یک مشکل دارم
هنگامی که برنامه wpf رو اجرا می کنم وقتی روی یک button کلیک می کنم رنگ button مدام عوض میشه
لطفا راهنمایی کنید
سید مهدی حسینی قیداری مدرس دوره
سلام کد خودتون رو قرار بدید لطفا
M.j.javadi1387 دانشجوی دوره
سلام من یک مشکل دارم
هنگامی که برنامه wpf رو اجرا می کنم رنگ button ها مدام عوض میشه
لطفا راهنمایی کنید
M.j.javadi1387 دانشجوی دوره
استاد لطفاً شما بگید
سید مهدی حسینی قیداری مدرس دوره
پاسخ داده شد
M.j.javadi1387 دانشجوی دوره
سلام
آیا در این دوره entity Framework core هم آموزش دادید؟
سید مهدی حسینی قیداری مدرس دوره
بله
M.j.javadi1387 دانشجوی دوره
سلام در این دوره entity Framework core هم آموزش دادید؟
سید مهدی حسینی قیداری مدرس دوره
سلام بله
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، آموزش ساخت کاستوم کنترل و… داده شده هم شامل دوره های قبلی هست (البته با روش های بهتر و جدیدتر) هم شامل مباحث جدید
مهدی روحانی
سلام
وقت بخیر
این دوره به پیش نیاز خاصی نیاز داره؟
سید مهدی حسینی مدرس دوره
سلام خیر دوست عزیز نیاز به پیش نیازی نداره