绑定视图到ViewModel时出错

时间:2014-06-04 08:23:28

标签: c# wpf mvvm

在将视图绑定到viewmodel期间,我收到两个错误:

Error   1   ''local' is an undeclared prefix. Line 12, position 7.' XML is not valid.   
Error   2   The attachable property 'Source' was not found in type 'Navigator'. 

我在WPF中很新。我从其他人那里收到了一些代码,并命令以相同的方式重写其余的代码。我正在使用的相同代码正在处理我得到的示例视图。

部分视图xamls。

 <Page x:Class="XYZ.Views.Pages.EulaPage"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
  mc:Ignorable="d" 
  d:DesignHeight="500" d:DesignWidth="640"
  Title="EulaPage"
  xmlns:controls="clr-namespace:System.Windows.Controls" 
  Initialized="EulaPage_Initialized"
  KeepAlive="True"
  local:Navigator.Source="{Binding}">
<Page.DataContext>
    <local:EulaPageViewModel/>
</Page.DataContext>

和ViewModel:

class EulaPageViewModel :ObservableObject, INavigable
{
    /// <summary>
    /// 
    /// </summary>
    public INavigationService NavigationService { get; set; }

    private ICommand acceptRadioButton_Checked;

    public ICommand AcceptRadioButton_Checked
    {
        get
        {
            if (acceptRadioButton_Checked == null)
            {
                acceptRadioButton_Checked = new RelayCommand(
                    param => Accept(),
                    param => (true)
                        );
            }
            return acceptRadioButton_Checked;
        }
    }
    private void Accept()
    {
        return;
    }

}
}

您可以查看我的代码部分并告诉我哪里出错了吗?

2 个答案:

答案 0 :(得分:1)

你必须使用下面提到的代码

<Page x:Class="XYZ.Views.Pages.EulaPage"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
  xmlns:local="clr-namespace:XYZ"
  mc:Ignorable="d" 
  d:DesignHeight="500" d:DesignWidth="640"
  Title="EulaPage"
  xmlns:controls="clr-namespace:System.Windows.Controls" 
  Initialized="EulaPage_Initialized"
  KeepAlive="True">
<Page.DataContext>
    <local:EulaPageViewModel/>
</Page.DataContext>

如果您在Viewmodel文件夹中的Eula Page ViewModel类

xmlns:local="clr-namespace:XYZ.ViewModel"

答案 1 :(得分:1)

您有一个简单的错误,即您已将包含local:的行粘贴到另一个文件中,并且未在标题中定义前缀,只需打开该文件并找到以下行:

xmlns:local="some reference" 

它将在该文件的根标记中。

此行等同于using namespace C#构造。