在xaml中获取x:datatype的错误

时间:2016-06-18 09:35:12

标签: c# visual-studio xaml win-universal-app uwp-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; }
}
 }

现在我的问题是我收到了错误&#34;名称&#34;详细信息&#34;命名空间中不存在&#34;使用:WindowsApp2.ViewModels&#34;。 My Detail类在命名空间WindowsApp2.ViewModels中定义。那么这里有什么问题。 注意:我删除了一些与此错误无关的代码

1 个答案:

答案 0 :(得分:0)

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

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

所以替换

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

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

这当然也要求有一个

public MainPageViewModel ViewModel { get; }
您的MainPage类中的

属性。

另请注意,对TwoWay属性的ItemsSource绑定没有意义。它应该是OneWay,或者可能是默认的OneTime