ورود

View Full Version : سوال: سوئیچ کردن بین userControl ها



AftaB66
سه شنبه 19 فروردین 1393, 11:18 صبح
سلام.
سال نو همگی مبارک .
من یکسری یوزرکنترل دارم که می خوام بین اونها سوئیچ داشته باشم.
یوزرکنترل اول رو روی main window قرار دادم و میخوام از usc1 به usc2 و.. حرکت کنم.
آیا باید این یوزرکنترل ها رو mainWindow.content قرار بدم. چطور باید این انتقال رو انجام بدم ؟

Boy_nn
سه شنبه 19 فروردین 1393, 13:06 عصر
از طریق کد میتونی مقدار mainWindow.content رو عوض کنی و یوزر کنترل جدید روش قرار بدی

AftaB66
سه شنبه 19 فروردین 1393, 16:35 عصر
از طریق کد میتونی مقدار mainWindow.content رو عوض کنی و یوزر کنترل جدید روش قرار بدی

در mainWindow.xaml:


<local:UserControl1></local:UserControl1>

در .cs یوزرکنترل ها :

UserControl2 uc = new UserControl2(this);
((Window)(this.Parent as Window)).Content = uc;
syntax کدهام درسته؟ (کار می کنه)

rg_BlackRose
سه شنبه 19 فروردین 1393, 18:10 عصر
سلام


شما برای اینکار


1. یک ContentControl بر روی MainWindow ایجاد کنید.(در اینجا TContent نام گذاری شده)
2. یک کلاس تعریف کنید و کدهای زیر رو درونش قرار بدید.(در اینجا نام کلاس ContentManager در نظر گرفته شده)



class ContentManager
{
private static string CurrentUserControlName;


public static void add(UserControl oControl)
{
var MWindow = App.Current.Windows.Cast<System.Windows.Window>().FirstOrDefault(window => window is MainWindow) as MainWindow;


if (MWindow != null)
{
if (oControl.Name != CurrentUserControlName)
{
MWindow.TContent.Content = oControl;
CurrentUserControlName = oControl.Name;
}
}
}
}


3. حالا برای قرار دادن UserControl جدید بر روی MainWindow از هر جای پروژه، از کد زیر استفاده کنید.


ContentsManager.add(new MyUserControl { Name = "MyUserControlName" });


نکته: به جای MyUserControl یوزر کنترل مورد نظرتون و به جای MyUserControlName یک نام برای یوزر کنترل مورد نظر قرار بدید.

موفق باشید.

AftaB66
شنبه 23 فروردین 1393, 08:25 صبح
سلام


شما برای اینکار


1. یک ContentControl بر روی MainWindow ایجاد کنید.(در اینجا TContent نام گذاری شده)
2. یک کلاس تعریف کنید و کدهای زیر رو درونش قرار بدید.(در اینجا نام کلاس ContentManager در نظر گرفته شده)



class ContentManager
{
private static string CurrentUserControlName;


public static void add(UserControl oControl)
{
var MWindow = App.Current.Windows.Cast<System.Windows.Window>().FirstOrDefault(window => window is MainWindow) as MainWindow;


if (MWindow != null)
{
if (oControl.Name != CurrentUserControlName)
{
MWindow.TContent.Content = oControl;
CurrentUserControlName = oControl.Name;
}
}
}
}


3. حالا برای قرار دادن UserControl جدید بر روی MainWindow از هر جای پروژه، از کد زیر استفاده کنید.


ContentsManager.add(new MyUserControl { Name = "MyUserControlName" });


نکته: به جای MyUserControl یوزر کنترل مورد نظرتون و به جای MyUserControlName یک نام برای یوزر کنترل مورد نظر قرار بدید.

موفق باشید.
سلام.
ببخشید این چند روز اصلا on نشدم.
ممنون خیلی روش خوب و مختصر و مفیدیه .