PDA

View Full Version : سوال: نحوه ارتباط پیج ها



hamidhws
شنبه 13 فروردین 1390, 08:30 صبح
سلام دوستان

فرض کنید 2 تا user control با نام های page1.xaml , page2.xaml در سمت کلاینت ساخیتم و توی هر کدوم یه button گذاشتیم

حالا چطوری میشه کاری کرد که مثلا هروقت روی دکمه توی صفحه page1.xaml کلیک میکنیم دکمه دیگه که توی page2.xaml هست ناپدید بشه(visibility)؟


از دوستان اگه کسی میدونه خواهش میکنم راهنمایی کنه چون خیلی خیلی عجله دارم


پبشاپیش بازم ممنون از دوستانی که کمک میکنن

mahdi7s
دوشنبه 15 فروردین 1390, 00:16 صبح
سلام

در مراحل پیچیده تر -> مثلا در برنامه های modular (برنامه هایی که هر یک یا چند صفحه یا پنجره اون ها یک کامپوننت جدا است و می تواند بعد از اجرای برنامه از سرور دانلود و به برنامه اصلی بچسبد...) شما باید از Event Aggregatoin (http://msdn.microsoft.com/en-us/library/dd458918.aspx) استفاده کنید که کار آن بدین گونه است: هر کلاس در کامپوننت ها (یا مودال های) متفاوت می تواند رویداد مورد نظر را به عنوان پارامتر در سازنده اش بگیرد و بعد از آن از رویداد های بین مودال های دیگر با خبر شود.

اما اگر قصدتان اطلاع رسانی بین دو پنجره از یک برنامه یک تکه باشد کافی است یک رویداد عمومی را داخل یک کلاس(مثلا داخل کلاس App یا یک کلاس singleton) پیاده سازی کنید و آن را در یک پنجره handle و در پنجره دیگه fire کنید!

موفق باشید

hamidhws
دوشنبه 15 فروردین 1390, 10:41 صبح
سلام آقا مهدی ممنونم از پاسخگویی شما دوست عزیز


اما اگر قصدتان اطلاع رسانی بین دو پنجره از یک برنامه یک تکه باشد کافی است یک رویداد عمومی را داخل یک کلاس(مثلا داخل کلاس App یا یک کلاس singleton) پیاده سازی کنید و آن را در یک پنجره handle و در پنجره دیگه fire کنید!

بله همین کارو میخواستم بکنم خدا خیرتون بده فقط نفهمیدم چطوری fire , handle کنم ! اگه بنده رو راهنمایی کنید ممنون میشم دوست عزیز

اگه یه توضیح کوچک هم در مورد کلاس singleton و نحوه پیاده سازیش بفرمایید ممنون میشم .


بازم ممنونم از شما دوست عزیز

mahdi7s
سه شنبه 16 فروردین 1390, 00:28 صبح
سلام

بله همین کارو میخواستم بکن
این آخری کلمه پنجره منظورم بودا نه صفحه اما فکر می کنم منظور شما از صفحه دیگر، باز کردن یک برنامه جدید بود؟!(همون باز کردن برنامه در تب یا مرورگری دیگر که یکی بودن یا نبودن رایانه کلاینت هیچ فرقی نمی کنه)
اگر منظورتان این بوده قسمت آخر جوابم را بی خیال شوید و اصلا ربطی ندارد و معلوم است که شما باید این رویداد را به سرور گزارش دهید تا آن هم (به هر طریقی) به کلاینتی که می خواهید(یا همین کلاینت) رویداد را گزارش دهد،
اما فگر می کنم اگر این را می خواهید یا راه حل خوبی را انتخاب نکردید و یا ... نقطه!
ولی با قابلیت websocket (که کمی قبلا در موردش با هم گفتگو کردیم...) که با Html5 آمده و ... خودم حرف خودم را رد می کنم!(البته باید توجه کنید این قابلیت محدودیت هایی هم داره ولی کلا چیز توپیه!)

اما اگر قصدتان اطلاع رسانی بین دو پنجره از یک برنامه یک تکه باشد کافی است یک رویداد عمومی را داخل یک کلاس(مثلا داخل کلاس App یا یک کلاس singleton) پیاده سازی کنید و آن را در یک پنجره handle و در پنجره دیگه fire کنید!

ولی اگر منظورتان کنترلری شبیه یک پنجره یا صفحه بوده(مثل ChildWindow) بگویید تا بیشتر توضیح بدم...


اگه یه توضیح کوچک هم در مورد کلاس singleton و نحوه پیاده سازیش بفرمایید ممنون میشم .

http://msdn.microsoft.com/en-us/library/ff650316.aspx

موفق باشید

hamidhws
سه شنبه 16 فروردین 1390, 07:34 صبح
سلام

ولی اگر منظورتان کنترلری شبیه یک پنجره یا صفحه بوده(مثل ChildWindow) بگویید تا بیشتر توضیح بدم...
بله دوست عزیز منظورم همینه
در واقع فرض کنید 2 تا یوزر کنترل با نام های page1.xaml , page2.xaml ساختم و هردو رو به main page اضافه کردم ... درواقع 2 صفحه رفته توی یه صفحه و حالا میخوام ارتباط برقرار کنم از page1 به page2 و بالعکس ...

امیدوارم منظورمو درست بیان کرده باشم

مهدی فرزاد
سه شنبه 16 فروردین 1390, 08:54 صبح
سلام
یک نگاهی به این بنداز (البته مثالی که زدم با WPF هست ) ببین کارت رو را ه میندازه؟؟
دوتا یوزر کنترل گذاشتم تو یک ویندوز تو اولی یک تکس باکس و یک دکمه و یک تکس بلاک هست و تو دومی یک کمبو باکس
حالا هرچی تو تکس باکس بنویسی و دکمه رو بزنی به کمبو یوزر کنترل دومی اضافه میشه و وقتی تو کمبو انتخابش کنی در تکس بلاک یوزر کنترل اول نمایش داده میشه

hamidhws
سه شنبه 16 فروردین 1390, 09:31 صبح
واقعا ممنونم از شما دوست عزیز Mehdi550u

ممنون از سورس و مثال خوبتون
خیلی خوب جواب داد

خوشحالم که امثال شما در این سایت هستید

واقعا از کمک هاتون ممنونم دوست عزیز