سئوالات و مباحث WPF

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
قبلا گفتم بهتون، قرار نیست درستی درک تون رو تایید یا رد کنم.

خیلی ممنون استاد .
استاد یه راهنمایی بفرمایید دیگه .
الان اون چیزهایی که گفتم و عکسش را کشیدم ، حداقل با معماری mvvm ، تناقض داره یا نه؟
تشکر استاد . :rose:
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
باید کدتون رو بررسی کنید و ببینید با چی تداخل داره چون مشکلی در WidthProperty نیست. من نمیتونم کد ناقص شما رو اجرا کنم، خودتون باید در پروژه بررسی اش کنید. اما میتونم در مثال ساده خودم ببینم که WidthProperty مشکلی نداره :
C#:
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            var style = new Style(typeof(MyWindow));
            var setter = new Setter(MyWindow.MyBackgroundProperty, Brushes.Red);
            style.Setters.Add(setter);
            var w = new MyWindow() { Height = 200 };
            var setter2 = new Setter(MyWindow.WidthProperty, 200d);
            style.Setters.Add(setter2);
            w.Style = style;
            w.MyBackground = Brushes.Yellow;
            w.ShowDialog();
        }

سلامی مجدد
خیلی ممنون استاد .
دوباره رفتم سراغ پروژه (ان شاء ا... احتمالا این پروژه را با انرژی کمتری ادامه میدم ولی بیشترِ تمرکزم را روی آموزش میخوام بذارم) .

مشکلش این بود که در پنجره ی AlarmWindow ، پروپرتیِ SizeToContent اش را به WidthAndHeight سِت کرده بودم و باعث میشد که Width و Height ئه پنجره را بصورت اتوماتیک ، به اندازه ی محتوای پنجره سِت کنه .
تشکر استاد .
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلامی مجدد
استاد ، اینکه میگن یکی از ویژگی های wpf اینه که طراح ، طراحیِ برنامه را انجام میده و همزمان برنامه نویس هم بخش منطق تجاری اش را میتونه انجام بده ، صرفا بخاطر این نیست که در wpf ، از xaml استفاده میشه . درسته؟

بلکه بخش عمده ی این ویژگی (جدا بودن منطق تجاری از view) ، بخاطر اینه که اگه از معماریِ mvvm در اون پروژه استفاده بشه ، این قابلیت را (حداقل بصورت کامل) خواهد داشت . درسته؟

یعنی صِرف اینکه از xaml در wpf (بدون معماری mvvm) استفاده میشه ، حداقل بصورت کامل این قابلیتِ همزمانیِ طراحی view و منطق تجاری ، وجود نداره (شاید بخشی از این قابلیت ، بدون پیاده سازی معماری mvvm وجود داشته باشه ، اما کامل نمیشه انجام داد) . درسته؟
تشکر استاد .
 

the_king

مدیرکل انجمن
سلامی مجدد
استاد ، اینکه میگن یکی از ویژگی های wpf اینه که طراح ، طراحیِ برنامه را انجام میده و همزمان برنامه نویس هم بخش منطق تجاری اش را میتونه انجام بده ، صرفا بخاطر این نیست که در wpf ، از xaml استفاده میشه . درسته؟
بخاطر XAML نیست.

بلکه بخش عمده ی این ویژگی (جدا بودن منطق تجاری از view) ، بخاطر اینه که اگه از معماریِ mvvm در اون پروژه استفاده بشه ، این قابلیت را (حداقل بصورت کامل) خواهد داشت . درسته؟
بله.

یعنی صِرف اینکه از xaml در wpf (بدون معماری mvvm) استفاده میشه ، حداقل بصورت کامل این قابلیتِ همزمانیِ طراحی view و منطق تجاری ، وجود نداره (شاید بخشی از این قابلیت ، بدون پیاده سازی معماری mvvm وجود داشته باشه ، اما کامل نمیشه انجام داد) . درسته؟
تشکر استاد .
بله.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
خیلی ممنون استاد . :rose:
استاد ، در لینک زیر :


When we create a new thread to share the load of a UI Thread and want to update the UI from the Non-UI Thread then we have to use a dispatcher.

As we learned, only dispatcher can update the objects owned by UI Thread from a Non-UI Thread.

گفته که برای ارتباط نخ جدیدی که ساختیم با نخ ui thread (نخی که کنترل ها و المنت هامون را توش ساختیم) و برای آپدیت کردن (و دسترسی) به المنت ها در ui thread ، از طریق نخِ دیگه ، باید از اعضای dispatcher ئه اون کنترل و المنت استفاده کنیم (متد invoke در dispatcher) .

اما در مثال های زیرِ اون خط که اصلا نخ ای نساخت . صرفا از دلیگیت action (در متد invoke) استفاده کرد که همونطور که معلومه ، صرفا دلیگیت هست . شیِ جدیدِ thread ای نمیشه برای این دلیگیت ساخت تا از اون نخ ، به اعضای کنترل های ui thread مون دسترسی داشته باشیم .
در واقع کد زیر :

C#:
this.Dispatcher.Invoke(() => { 
                Login(); 
            });

ای که نوشت ، نخ جدیدی براش ساخته نشد . در واقع در همون نخ ui thread اجرا میشه .
پس با این حال ، چرا همچین جمله ای را در بالا (که نقل قول کردم) نوشت؟!
تشکر استاد .
 

the_king

مدیرکل انجمن
خیلی ممنون استاد . :rose:
استاد ، در لینک زیر :




گفته که برای ارتباط نخ جدیدی که ساختیم با نخ ui thread (نخی که کنترل ها و المنت هامون را توش ساختیم) و برای آپدیت کردن (و دسترسی) به المنت ها در ui thread ، از طریق نخِ دیگه ، باید از اعضای dispatcher ئه اون کنترل و المنت استفاده کنیم (متد invoke در dispatcher) .

اما در مثال های زیرِ اون خط که اصلا نخ ای نساخت . صرفا از دلیگیت action (در متد invoke) استفاده کرد که همونطور که معلومه ، صرفا دلیگیت هست . شیِ جدیدِ thread ای نمیشه برای این دلیگیت ساخت تا از اون نخ ، به اعضای کنترل های ui thread مون دسترسی داشته باشیم .
در واقع کد زیر :

C#:
this.Dispatcher.Invoke(() => {
                Login();
            });

ای که نوشت ، نخ جدیدی براش ساخته نشد . در واقع در همون نخ ui thread اجرا میشه .
پس با این حال ، چرا همچین جمله ای را در بالا (که نقل قول کردم) نوشت؟!
مطلب رو Rikam Palkar نوشته، اگر سوالی در مورد مطالب ایشون دارید و دلایل شون رو میخواهید بدانید باید از خودش بپرسید.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
مطلب رو Rikam Palkar نوشته، اگر سوالی در مورد مطالب ایشون دارید و دلایل شون رو میخواهید بدانید باید از خودش بپرسید.

خیلی ممنون استاد .
یعنی ممکنه اشتباه یا بدون تحقیق کافی نوشته باشن؟
اعتبار هر مقاله در سایت های این چنینی را نمینویسن که مثلا چقدر معتبره؟
چون سایت c-sharpcorner.com ، خیلی از مطالب خوب و آموزش های خوبی ارائه داده .

----------------------

همون انگار مثل قضیه ی Invoke (که بصورت همگام فراخونی میکنه) و BeingInvoke (که بصورت همزمان فراخونی میکنه) در کلاس Control در winform هست .
انگار کارکردش اینه که این متدها ، از درون نخِ دیگری باید فراخونی بشن (که در مثال لینک بالا ، از نخِ خودش که ui thread هست ، فراخونی کرده که در این صورت ، انگار کاربردی نداره) .

تشکر
 
آخرین ویرایش:

the_king

مدیرکل انجمن
خیلی ممنون استاد .
یعنی ممکنه اشتباه یا بدون تحقیق کافی نوشته باشن؟
نه. ممکنه مثال اش برای موضوعی که میخواد توضیح بده مثال مناسبی نباشه. من هم ممکنه برای موضوعی یک مثال بنویسم که بعدا ببینم برای اون موضوع مثال بهتری هم بوده، یا اصلا مثال درستی نبوده و گمراه کننده است.

اعتبار هر مقاله در سایت های این چنینی را نمینویسن که مثلا چقدر معتبره؟
چون سایت c-sharpcorner.com ، خیلی از مطالب خوب و آموزش های خوبی ارائه داده .
مساله فردی ئه، ممکنه در یک سایت صد نفر مطلب بنویسند که یکسری شون معلومات بیشتری دارند و یکسری شون معلومات کمتر. هر کسی ممکنه اشتباه کنه. اون چیزی که بیشتر اهمیت داره اینه که مطالب بازبینی بشه، رویش نظارت بشه، که اگر اشتباهی هست تصحیح بشه، اگر نواقصی هست تکمیل بشه.
من الان اگر چیزی در مجید آنلاین بنویسم و اشتباه باشه کی درستش می کنه؟ هیچکسی. فرق می کنه با مطالبی که در سایت مایکروسافت یا حتی ویکی پدیا هست، که حتی کاربر میتونه ایرادی که شناسایی کرد رو Edit کنه، ایراد رو برطرف کنه که اینها بعدا بازبینی میشه. مایکروسافت چرا مایکروسافت شده؟ چون حتی از بازدید کننده اش کمک می گیره تا مطالب تکمیل بشه. ازتون Review میگیره که آیا این پاسخ مفید بود یا نه. مطلبی که آمار بازخورد خوبی نداشته بازبینی می کنه.
 

جدیدترین ارسال ها

بالا