2017-02-02 21 views
1

Я делаю базовое приложение в WPF (C#), где я хотел использовать UserControl. Я уже создал 3 образца UserControl и одностраничное окно с кнопками, ярлыками, панелью и т. Д. Я хотел загрузить каждую кнопку UserControl при нажатии. Вы можете увидеть мою логику (код) ниже -Как реализовать usercontrol, чтобы быть видимым при нажатии внутри одной панели (DockPanel)?

public partial class Dashboard : Window 
{ 
    public Dashboard() 
    { 
     InitializeComponent(); 
    } 

    private void btn1_Click(object sender, RoutedEventArgs e) 
    { 

     Dock_MainPanel.Controls.Clear(); 
     Dock_MainPanel.Visible = true; 
     Sample1 usr1 = new Sample1(); 
     usr1.Show(); 
     Dock_MainPanel.Controls.Add(usr1); 
    } 

    private void btn2_Click(object sender, RoutedEventArgs e) 
    { 
     //SAMPLE CODE 
    } 
} 

Теперь моя проблема в том, что этот код не работает. В нем указывается некоторая ошибка. Это показано на рисунке ниже -

Error shown in image

В основном я хотел, чтобы загрузить каждый UserControl на щелканье их соответствующей кнопки. Если у кого есть другие решения, это приветствуется.

ответ

1

Как @Stefan W. предлагает вам следует добавить экземпляр UserControl для сбора детей в DockPanel, но если вы собираетесь добавить несколько элементов в тот же DockPanel вы, вероятно, также хотите установить прикрепленное свойство Dock элемента, используя для указания, где в DockPanel элемент будет расположен. Вы можете сделать это, используя метод DockPanel.SetDock. Также, чтобы сделать видимым DockPanel, вы установите его Visibility на Visibility.Visible. Попробуйте следующее:

private void btn1_Click(object sender, RoutedEventArgs e) 
{ 
    Dock_MainPanel.Children.Clear(); 
    Dock_MainPanel.Visibility = Visibility.Visible; 
    Sample1 usr1 = new Sample1(); 
    DockPanel.SetDock(usr1, Dock.Right); 
    Dock_MainPanel.Children.Add(usr1); 
} 
1

Вы должны получить доступ к «Детской» коллекции в DockPanel

Dock_MainPanel.Children.Clear(); 

    Dock_MainPanel.Children.Add(usr1);