在wpf窗口中使用自定义控件

时间:2013-12-08 17:01:54

标签: .net wpf

我创建了名为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;
}

但没有任何反应,显然我错过了什么

3 个答案:

答案 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;
}