我创建了名为MainControl.xaml的用户控制器。在我的MainWindow.xaml里面(它是空的,空白)我想插入这个MainControl控件。
所以我在MainWindow加载的事件中放了
private void Window_Loaded(object sender, RoutedEventArgs e)
{
var bc = new Controls.BooksControl();
bc.Visibility = System.Windows.Visibility.Visible;
}
但没有任何反应,显然我错过了什么
答案 0 :(得分:2)
您应该将控件添加到窗口中(将此新控件设置为窗口内容):
private void Window_Loaded(object sender, RoutedEventArgs e)
{
var bc = new Controls.BooksControl();
bc.Visibility = System.Windows.Visibility.Visible;
this.Content = bc;
}
答案 1 :(得分:1)
您需要将其添加到实际容器中才能显示它。例如Grid或StackPanel。如果您添加自定义clr-namespace,您还可以直接从XAML中添加您的控件。
答案 2 :(得分:1)
我将假设您提到的 MainControl 实际上是您在代码中实例化的 BooksControl 露出。
是的,您已经在代码隐藏中创建了一个新实例,但从我看到的内容中您还没有做任何事情来实际将其添加到布局(特别是给定您已经提到 MainWindow.xaml 为空。)
现在,我也会假设当你说&#34; 但没有任何事情发生时&#34;您的意思是 BooksControl 未在 MainWindow 中显示 - 这是因为,如上所述,您尚未将其添加到布局中。< / p>
执行此操作的两种主要方法是在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;
}