我是WPF的新手,我正在执行以下代码:
public partial class MainView : ViewModelControl
{
public MainView()
{
InitializeComponent();
this.DataContext = new ViewModel1();
}
}
如您所见,我有自己的类ViewModelControl。我在视图模型控件类下面有以下代码:
public partial class ViewModelControl : Window, IViewModelControl
{
public virtual void bindFirstDataContext()
{
}
public virtual void bindSecondDataContext()
{
}
}
我将以下 XAML 修改为:
<Window x:Class="WpfApplication1.View.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainView" Height="262" Width="316">
现在的问题是它的显示错误"'WpfApplication1.View.MainView'的部分声明不能指定不同的基类"。默认情况下,当我使用 Window 类实现它时,它不像以前那样工作。我哪里做错了?
分部类声明的基类应该相同。你已将代码中的窗口隐藏更改为视图模型控件,因此也需要在 XAML 中更新。
将 XAML 声明更改为以下内容:
<local:ViewModelControl
x:Class="WpfApplication1.View.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Namespace"> <-- HERE replace Namepsace with
actual namespace of class
ViewModelControl.
....
</local:ViewModelControl/>
您需要更改 XAML:
<src:ViewModelControl x:Class="WpfApplication1.Interface.MainView"
xmlns:src="clr-namespace:WpfApplication1.Interface" ...>
</src:ViewModelControl>
这将起作用,在类属性中要小心,写下类的全名("命名空间")。类的名称")
在"xmlns:src="clr-namespace:"之后,您需要编写 ViewModelControl 所在的命名空间。
它需要这样,因为 MainView 不直接从窗口继承,因此如果它不是窗口的直接子级,则不能将类名放在窗口的类属性中。
通过此更改,它应该可以工作,我试过了,如果您仍然遇到一些问题,请再次查看命名空间名称,很容易混淆。