0

我正在学习 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 必须是树的根。不能将 Window 添加为 Visual 的子级。”}

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

笔记:

我怀疑这是由于 clr-namespace 造成的。

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

(或者):

是因为我试图插入另一个 window.xaml 页面的新 Window.xaml 页面吗?与 Silverlight 视频不同,它确实将 UserControl 插入到页面中。

MainWindow 变成 MainWindow 这里有问题吗?如果我在 MainWindow 中使用 UserControl 会得到解决吗?意思是,我们没有窗口到窗口?

4

2 回答 2

4

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

于 2013-07-01T06:04:10.770 回答
1

窗口.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>

这会将您的用户控件导入窗口。/

希望这会帮助你。

于 2013-07-01T06:30:24.527 回答