从WPF用户控件转换为窗口?

6

我一直在开发一个命令行应用程序,最近决定为该应用程序添加一个wpf窗口。我将其添加为UserControl,但是我注意到我无法从我的主代码中使用ShowDialog()调用此类;

我尝试将基类从UserControl更改为Window,但是会出现错误;

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

错误 1 部分声明的 'ExcelExample.UserControl1' 不得指定不同的基类ExcelExample

我已经添加了在我的另一个 WPF 应用程序中发现的所有引用,但仍然无济于事。请帮忙!


不确定关于ShowDialog()的问题,但是当你更改为不同的子类时出现错误的原因是有一个UserControl1的定义存在于其他地方(这就是“partial”所表示的),可能是在InitializeComponent()所在的文件中与用户界面相关联。 - Michael Todd
卡住了,在全局搜索UserControl1后,我只能在XAML文件中找到引用。我可以看到该文档是System.Window.Controls.UserControl。我能否将文档转换为WPF文档,并且需要更改哪些项目设置才能添加基本的WPF表单? - wonea
1个回答

11
为了改变基类,仅在代码中更改是不够的。您还必须更改根标记和任何伴随XAML文件中的嵌套元素。例如,您有以下内容:

要更改基类,不仅需要在代码中进行更改,还需要更改相应XAML文件中的根标签和任何嵌套元素。例如,您可能拥有以下代码:

<UserControl x:Class="Your.Namespace.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
     <UserControl.Resources>
     </UserControl.Resources>
</UserControl>

你必须将它改成类似以下内容:

<Window x:Class="Your.Namespace.UserControl1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
     <Window.Resources>
     </Window.Resources>
</Window>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接