【问题标题】:Changing from WPF User Control to Window?从 WPF 用户控件更改为窗口?
【发布时间】:2010-05-05 14:43:51
【问题描述】:

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

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

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

错误 1 ​​的部分声明 'ExcelExample.UserControl1' 不得 指定不同的基地 类Excel示例

我已添加在我的其他 WPF 应用程序中找到的所有引用,但无济于事。救命!

【问题讨论】:

  • 不确定 ShowDialog() 问题,但是当您更改为不同的子类时出现错误的原因是在其他地方有 UserControl1 的定义(这就是“部分”的意思),可能在 InitializeComponent() 所在的文件中并与您的用户界面相关。
  • 难住了,对 UserControl1 进行了全局搜索,我只能在 XAML 文件中找到引用。我可以看到文档是 System.Window.Controls.UserControl 我可以将文档转换为 WPF 文档,我需要更改哪些项目设置才能添加基本的 WPF 表单?

标签: c# .net wpf


【解决方案1】:

要更改基类,仅在代码中进行更改是不够的。您还必须更改随附 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多