2013-12-08 3 views
0

Я создал контроллер пользователя с именем MainControl.xaml. Внутри моего MainWindow.xaml (который пуст, пуст) я захотел вставить этот элемент MainControl.с помощью пользовательского контроля внутри окна wpf

Так внутри MainWindow нагруженный событие я положил

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    var bc = new Controls.BooksControl(); 
    bc.Visibility = System.Windows.Visibility.Visible; 
} 

, но ничего не происходит, очевидно, я что-то

+0

Вы можете также пост какой-нибудь XAML вашего MainWindow? – ChrisK

+0

Главное окно пуста, поэтому на самом деле ничего не стоит внутри xaml, которое стоит опубликовать, window init. код и пустые теги сетки. – panjo

+0

В этом случае вы можете установить содержимое сетки на 'bc'. Хотя вы можете добавить свой контроль непосредственно в XAML. – ChrisK

ответ

1

Необходимо его добавить в фактический контейнер, чтобы его показать. Например, Grid или StackPanel. Если вы добавите пользовательский номер clr-namespace, вы также можете добавить свой контроль непосредственно из своего XAML.

2

отсутствует Вы должны добавить элемент управления в окне (установить этот новый элемент управления в качестве содержимого окна):

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    var bc = new Controls.BooksControl(); 
    bc.Visibility = System.Windows.Visibility.Visible; 
    this.Content = bc; 
} 
1

Я буду предполагать MainControl, что вы упомянули это на самом деле BooksControl, который конкретизируется в вашем коде, который вы подвержены.

Да, вы создали новый экземпляр в коде-позади, но от того, что я вижу, что вы не сделали ничего на самом деле добавить его в макет (особенно учитывая, что вы упомянули, что ваш MainWindow.xaml пуст).

Теперь, я также буду считать, что, когда вы говорите «, но ничего не происходит», что вы имеете в виду, что ваш BooksControl не показывается в вашем MainWindow - это потому, что, как описано, вы не добавили его в макет.

два основных способа сделать это находится в XAML или в коде позади:

XAML:

<Window x:Class="MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xlmns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     controls="clr-namespace:Controls;assembly=Controls"> 

    <controls:BooksControl/> 

</Window> 

Код За

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    var bc = new Controls.BooksControl(); 

    // set the content of the Window to be the BooksControl 
    // assuming the BooksControl has default Visibility of Visible 
    this.Content = bc; 
} 
Смежные вопросы