PDA

View Full Version : بستن page



sara62
چهارشنبه 31 فروردین 1390, 10:21 صبح
سلام
من میخوام با کلید خروج که روی page گذاشتم بسته شه یا اینکه frame رو خالی کنم
چطور باید این کارو انجام داد؟
ممنون میشم اگه راهنمایی بفرمایید

Amir Oveisi
چهارشنبه 31 فروردین 1390, 12:55 عصر
برنامه شما چه نوعی هست؟ XBAP یا Stand-alone ؟
اگر XBAP هست و از طریق Browser اجرا میشه، بستن Browser کار منطقی نخواهد بود و شما میتونین کاربر رو به page دیگه ای redirect کنید.
اگر stand-alone هست برای بستن page میتونین از کد زیر استفاده کنید:
Window win = (Window)this.Parent;
win.Close();

موفق باشید

sara62
چهارشنبه 31 فروردین 1390, 16:09 عصر
برنامه شما چه نوعی هست؟ XBAP یا Stand-alone ؟
اگر XBAP هست و از طریق Browser اجرا میشه، بستن Browser کار منطقی نخواهد بود و شما میتونین کاربر رو به page دیگه ای redirect کنید.
اگر stand-alone هست برای بستن page میتونین از کد زیر استفاده کنید:
Window win = (Window)this.Parent;
win.Close();

موفق باشید
سلام
ممنونم از جوابتون
من از این کد استفاده کرده بودم منتها کلا سیستم هنگ میکنه

Amir Oveisi
پنج شنبه 01 اردیبهشت 1390, 10:03 صبح
پس احتمالا مشکل از جای دیگه ای هست. کدی که برای این کار نوشتید رو اینجا بزارید و اگر کار خاضی هم در اون page انجام میشه که به نظرتون میتونه دلیلی بر این مشکل باشه رو هم بیان کنید لطفا.
موفق باشید

sara62
جمعه 02 اردیبهشت 1390, 23:26 عصر
پس احتمالا مشکل از جای دیگه ای هست. کدی که برای این کار نوشتید رو اینجا بزارید و اگر کار خاضی هم در اون page انجام میشه که به نظرتون میتونه دلیلی بر این مشکل باشه رو هم بیان کنید لطفا.
موفق باشید

خب اول من از Window استفاده کرده بودم اما دبلیو-پی-اف که ام-دی-ای نداره واسه همین تصمیم گرفتم از page استفاده کنم حالا اینطوری نمایششون میدم

FramPayeh.Source = new Uri("WindowWorkshopsInfos.xaml", UriKind.Relative);
و یه سری فرما رو اینطوری

WindowRrport w = new WindowRrport(1);
FramPayeh.Navigate(w);
حالا میخوام با کلید خروجی که روی page گذاشتم میخوام صفحه رو بندم
کدی که شما لطف فرمودید رو امتحان کردم به نظرم null this.parent
برمیگردونه
میدونید واسه اینکه Windowها رو به page تبدیل کنم رفتم از کد زملش WIndow ها رو با Page جایگزین کردم
نمیدونم کجای کارم اشتباه بوده؟؟!!!
لطف میکنید اگه جواب بدید.
متشکرم

sara62
دوشنبه 05 اردیبهشت 1390, 18:30 عصر
سلام
کسی نیست جواب منو بده
خواهش میکنم راهنماییم کنید
:ناراحت:

Amir Oveisi
سه شنبه 06 اردیبهشت 1390, 11:16 صبح
واسه اینکه Windowها رو به page تبدیل کنم رفتم
این قسمت رو متوجه نمیشم! چرا window رو به page تبدیل می کنید؟ اصلا page ای به پروژه اضافه کردید؟

sara62
چهارشنبه 07 اردیبهشت 1390, 18:47 عصر
این قسمت رو متوجه نمیشم! چرا window رو به page تبدیل می کنید؟ اصلا page ای به پروژه اضافه کردید؟
ببیند من نمیدونستم که دبلیو-پی-اف ، ام-دی-ای نداره و بعد متوجه شدم که اگه به جای window از page استفاده میکردم واسه وراثت مشکلی نداشتم چون pageرو میتونم توی یه فریم روی فرم اصلی نمایش بدم
بنابراین تمام window هایی رو که ایجاد کرده بودم تبدیل کردم
حالا مشکلی که دارم اینه که نمیتونم کاری بکنم که با کلیک کردن دکمه خروج که روی page هست در واقع فریم خالی شه
چطور اینکا رو انجام بدم؟؟؟؟؟
ممنونم

Amir Oveisi
یک شنبه 11 اردیبهشت 1390, 11:42 صبح
شما از NavigationWindow استفاده کردید؟ (اصولا page رو داخل Window نمیشه قرار داد و باید NavigationWindow استفاده کنید).
آیا اون Window ای که داخلش Page هاتون هستند، چیزهای دیگه ای هم هستند که شما نمیونین کل window رو ببندید؟
در حالت کلی فلسفه page برای جایگزینی MDI نیست و بیشتر برای استفاده Wizard گونه ازش استفاده میشه.
لطفا پاسخ سوالات بالا رو بدید تا ادامه کار رو بررسی کنیم.

sara62
دوشنبه 12 اردیبهشت 1390, 00:42 صبح
آیا اون Window ای که داخلش Page هاتون هستند، چیزهای دیگه ای هم هستند که شما نمیونین کل window رو ببندید؟
منظورتون اون windowای هست که فریم رو روش گذاشتم؟؟
بله خیلی چیزای دیگه هم هست (کلی کلیدو تکست باکس و ..) اما من قصد دارم فریم رو خالی کنم
که مثلا کاربر فکر کنه که اون فرمو بسته اما اون فرمی که فریم رو روش گذاشتم بسته نشه
باید چکار کنم؟

در حالت کلی فلسفه page برای جایگزینی MDI نیست و بیشتر برای استفاده Wizard گونه ازش استفاده میشه.
لطفا پاسخ سوالات بالا رو بدید تا ادامه کار رو بررسی کنیم.
ممنونم.لطف میکنید

مهدی فرزاد
دوشنبه 12 اردیبهشت 1390, 09:03 صبح
سلام

برای خالی کردن Frame میتونید از این کد استفاده کنید
frame.Content = null;

در خصوص MDI در WPF این دو لینک رو مطالعه کنید
http://www.codeproject.com/KB/WPF/mwiwpf.aspx

http://wpfmdi.codeplex.com/

Amir Oveisi
دوشنبه 12 اردیبهشت 1390, 11:58 صبح
با کدی که آقای فرزاد فرمودند فریم شما خالی میشه و کارتون راه میفته، اما به نظر من کارتون مشکل پایه ای داره چون که به خاطر اینکه بتونین ارث بری در window هاتون داشته باشید از page استفاده کردید در حالی که page برای این کار طراحی نشده. اگر فقط به این دلیل از page استفاده کردید به شدت توصیه می کنم که این کار رو نکنید. و اگر هم حتما باید از MDI استفاده کنید، لینکش رو آقای فرزاد قرار دادند که میتونین ازش استفاده کنید.

پ.ن:
اگر کاربر هم متوجه نشد که شما چیکار می کنید تو برنامتون، خودتون که میدونید چیکار کردید، پس سعی کنید بهترین راه رو انتخاب کنید نه آسونترین :)
موفق باشید

sara62
دوشنبه 12 اردیبهشت 1390, 17:01 عصر
سلام
یه سئوال
من چطوری از داخل پیج فریمو نال کنم؟
چطوری به فریم دسترسی داشته باشم بدون اینکه فرمو نیو کنم؟

ممنونم

Amir Oveisi
دوشنبه 12 اردیبهشت 1390, 17:45 عصر
فکر کنم باید parent اش باشه

مهدی فرزاد
دوشنبه 12 اردیبهشت 1390, 18:02 عصر
سلام
همون شکل که آقای اویسی گفتند این راه و کار شما اصولی نیست
ولی جواب اون چیزی که میخواید میشه از این راه انجام شه

شما داخل Page یک property به شکل زیر تعریف میکنید
public Frame myFrame { get; set; }


و page رو به این شکل فراخونی میکنید
Page1 p = new Page1();
p.myFrame = frame;
frame.Navigate(p);

و درون page برای خالی شدن Frame این کد رو مینویسید
this.myFrame.Content = null;

حرف های درست رو آقای اویسی زدند به نظر من استفاده از Page به این شکل مناسب نیست