2013-12-22 1 views
-1

У меня в проекте у меня есть MainForm с 2 UserControls. Пользователь UserControl1 имеет кнопку, которая делает видимым UserControl2.Показать usercontrol в MainWindow

Вот что я сделал:

UserControl1

private void Button1_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e) 
    { 
     MainWindow mw = new MainWindow(); 
     mw.CallMethod(); 
    } 

MainWindow

public void CallMethod() 
    { 
     USERCONTROL2 UC2 = new USERCONTROL2(); 
     UC2.Visibility = Visibility.Visible; 
     grid.Children.Add(UC2); 

    } 

... но когда я нажимаю кнопку UserControl1, ничто не происходит.

+0

вы создаете новый главный указатель мыши с помощью мыши в обратном направлении, в вашем пользовательском контрте l, это живет внутри вашего главного окна. Эмм, у тебя есть что-то назад :) – bas

ответ

0

Declare в вашем фоне кода следующее:

Private Visibility _vis_UC_2; 
Public Visibility vis_UC2 
{ 
get 
{ 
    return _vis_UC2; 
} 
set 
{ 
    _vis_UC2 = value; 
    OnPropertyChanged("vis_UC2"); 
} 
} 

Не забудьте добавить INotifyPropertyChanged к классу

Затем вы свяжете видимость вашего UserControl, чтобы vis_UC2.

В конструкторе устанавливается начиная видимости, такие как следующие

Public Void MainWindow() 
{ 
    InitializeCompotenents(); 
    vis_UC2 = Visibility.Collapsed; 
} 

и, наконец, под кнопкой мыши вы только сказать следующее:

vis_UC2 = Visibility.Visible; 
0

Добавить в вашу форму panel и сделать это:

UserControl1 u1 = new UserControl1(); 
UserControl2 u2 = new UserControl2(); 

// When you want UserControl1. 
u2.Hide(); 
u1.Show(); 
u1.Dock = DockStyle.Fill; 
panel1.Controls.Add(u1); 

// When you want UserControl2. 
u1.Hide(); 
u2.Show(); 
u2.Dock = DockStyle.Fill; 
panel1.Controls.Add(u2);