我的第一个WPF应用程序中的WPF window_loaded异常

时间:2013-07-01 05:26:15

标签: c# .net wpf mvvm wpf-controls

我正在学习WPF及其第一个MVVM应用程序。我正在看一个使用Silverlight应用程序演示MVVM的视频。但是,我正在为WPF模仿它。在Silverlight中,视频演示者在UserControl XAML标记中创建一个事件,即UserControl_Loaded,该事件是成功的。

但是,我在MainWindow.xaml的xaml文件的Window根元素中创建一个Window_Loaded

我收到此错误:(请帮助我。此事件“Window_Loaded”仅在第5行。

例外:

  

'为类型集合添加值   'System.Windows.Controls.UIElementCollection'引发了一个异常。   行号“5”和行位置“28”。

     

内部例外:

     

{“窗口必须是树的根。不能将Window添加为子窗口   视觉。“}

还请解释为什么它与解决方案一起发生。我只是想学习MVVM并使用可观察的集合,INotifyPropertyChanged和一个模型类,我正在以硬编码的方式生成这个对象的数据。

注意:

我怀疑这是由clr-namespace引起的。

首先,我想知道,为什么如果我输入clr,intellisense不会把我带到clr?相反,它只需要我在命名空间列表的序列中第一个http。其次,Silverlight Video使用了项目的命名空间,但是,我使用了View的命名空间。因为,当我使用项目的命名空间时,它给出了错误,说“找不到”。我出错的地方:(

(OR):

是否是由于我试图插入另一个window.xaml页面的新Window.xaml页面?与Silverlight视频不同,它将UserControl插入到页面中。

MainWindow进入MainWindow是个问题吗? 如果我将UserControl用于MainWindow,它会被解决吗?这意味着,我们没有窗户进入窗户?

2 个答案:

答案 0 :(得分:4)

你不能在另一个窗口内有一个窗口!窗口应该是xaml的根元素,您可以在其中添加其他元素。例如Grid。我的建议是找到一些WPF教程和书籍(不是silverlight),因为WPF更强大,而且在很多方面都不同。

答案 1 :(得分:1)

Window.xaml:

<Window  x:Class="WpfMvvmApplication1.Views.Login"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
    xmlns:View="clr-namespace:WpfMvvmApplication1.Views">
<Grid>
   <View:UserControl/>
</Grid>
</Window>

这会将您的usercontrol导入窗口./

希望这会对你有所帮助。