在将视图绑定到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;
}
}
}
您可以查看我的代码部分并告诉我哪里出错了吗?
答案 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#构造。