xaml 中的 x:datatype 出错

Getting error with the x:datatype in xaml

我的xaml代码

 <Page x:Class="WindowsApp2.Views.MainPage"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:Behaviors="using:Template10.Behaviors"
  xmlns:Core="using:Microsoft.Xaml.Interactions.Core"
  xmlns:Interactivity="using:Microsoft.Xaml.Interactivity"
  xmlns:controls="using:Template10.Controls"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  xmlns:local="using:WindowsApp2.Views"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  xmlns:vm="using:WindowsApp2.ViewModels" mc:Ignorable="d">

<Page.DataContext>
    <vm:MainPageViewModel x:Name="ViewModel" />
</Page.DataContext>
   <RelativePanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
  <ItemsControl ItemsSource="{x:Bind ViewModel.Detail,Mode=TwoWay}">
        <ItemsControl.ItemTemplate>
            <DataTemplate 
                x:DataType="vm:Details">
                <TextBox Margin="200,200,0,0"
     Text="{x:Bind name,Mode=TwoWay}"></TextBox>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</RelativePanel>

我的MainPageViewModel.cs

 using Template10.Mvvm;
using System.Collections.Generic;
using System;
 using System.Linq;
 using System.Threading.Tasks;
using Template10.Services.NavigationService;
using Windows.UI.Xaml.Navigation;
using WindowsApp2.Views;
namespace WindowsApp2.ViewModels
 {

public class Detail
{
    public string name { get; set; }
    public string pass { get; set; }
}

public class MainPageViewModel : ViewModelBase
{
    public MainPageViewModel()
    {
        if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)
        {
            Value = "Designtime value";
        }

    Details = new List<Detail>();
        for(int i=0;i<5;i++)
        {
            Detail d = new Detail();
            d.name = "kalp"+i.ToString();
            d.pass = "1234"+i.ToString();
            Details.Add(d);
        }
    }
    public List<Detail> Details { get; set; }
}
 }

现在我的问题是我收到错误 "The name "Detail" does not exist in the namespace "using:WindowsApp2.ViewModels"。我的 Detail class 是在命名空间 [=27= 中定义的] . 那么这里有什么问题呢。 注意:我删除了一些与此错误无关的代码

您描述的错误是无法编译的无效绑定的副作用。

您正在尝试绑定到一个确实不存在的视图模型 属性 Detail。您当然想要的是绑定到 Details 属性。

所以替换

<ItemsControl ItemsSource="{x:Bind ViewModel.Detail, Mode=TwoWay}">

<ItemsControl ItemsSource="{x:Bind ViewModel.Details, Mode=OneWay}">

这当然也需要有一个

public MainPageViewModel ViewModel { get; }

属性 在您的 MainPage class.

另请注意,TwoWay 绑定到 ItemsSource 属性 没有任何意义。它应该改为 OneWay,或者可能是默认值 OneTime