gpt4 book ai didi

c# - 如何修复 'Specified class name ' WpfSample.MainWindow' doesn't match actual root instance type 'System.Windows.Window' 错误?

转载 作者:太空宇宙 更新时间:2023-11-03 16:50:28 30 4
gpt4 key购买 nike

所以我尝试在 winforms 上使用自定义 wpf 控件:

var f = new FileStream (@"C:\sample.xaml", FileMode.Open, FileAccess.Read);
var element = XamlReader.Load(f);

f.Close();

var elementHost = new ElementHost();
elementHost.Dock = System.Windows.Forms.DockStyle.Fill;
elementHost.Child = element;
this.Controls.Add(elementHost);

我没有 WPF 经验,所以我不知道如何解决这个错误。

编辑:

所以这是 xaml 文件:

<Window x:Class="WpfSample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:r="http://schemas.aspitalia.com/Ricciolo/Controls"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.Resources>


<XmlDataProvider x:Key="data" Source="Data.xml">
</XmlDataProvider>

<HierarchicalDataTemplate x:Key="dt" ItemsSource="{Binding XPath=outline}">
</HierarchicalDataTemplate>

</Grid.Resources>

<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>

<r:TreeListView ItemsSource="{Binding Source={StaticResource data},XPath=/opml/body/outline/outline}" ItemTemplate="{StaticResource dt}">
<r:TreeListView.Columns>
<GridViewColumn Header="Title" DisplayMemberBinding="{Binding XPath=@title}" Width="150" />
<GridViewColumn Header="Childs" DisplayMemberBinding="{Binding XPath=@count}" Width="100" />
<GridViewColumn Header="Url" DisplayMemberBinding="{Binding XPath=@xmlUrl}" Width="200" />
</r:TreeListView.Columns>
</r:TreeListView>


</Grid>
</Window>

我还从网上的一个免费自定义 treelistview 控件中获得了这个,并在这个 xaml 使用的解决方案中包含了编译的控件和 data.xml。

编辑2:

MainWindow.xaml 的隐藏代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfSample
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow ( )
{
InitializeComponent ( );
}
}
}

最佳答案

好的。我认为问题出在您是从文件加载,但支持它的 Window 类(即对象背后的代码)没有随它一起引入。

您应该在与 WinForms 应用程序相同的程序集中定义 WPF 控件(不确定是否应该使用 WPF 窗口 - 也许尝试 UserControl instread?),或者简单地添加对包含 WPF UserControl 的程序集的引用,并以这种方式连接起来。

不管怎样,你应该能够说

elementHost.Child = new WpfSample.MainWindow();
this.Controls.Add(elementHost);

希望这能让你接近。

关于c# - 如何修复 'Specified class name ' WpfSample.MainWindow' doesn't match actual root instance type 'System.Windows.Window' 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4127171/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com