我的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中定义。那么这里有什么问题。 注意:我删除了一些与此错误无关的代码
答案 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
。