[BindingExpression尝试绑定到C#类字段时发生路径错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[BindingExpression尝试绑定到C#类字段时发生路径错误相关的知识,希望对你有一定的参考价值。
我有一个非常简单的绑定(使用{Binding}
,而不是{x:Bind}
),但是没有用:
<ListView
ItemsSource="{x:Bind ViewModel.Items, Mode=OneWay}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:Item">
<StackPanel>
<TextBlock Text="{Binding MyField}" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
它编译,但失败,并显示错误消息:
错误:BindingExpression路径错误:在'MyNamespace.Item'上找不到'MyField'属性。 BindingExpression:Path ='MyField'DataItem ='MyNamespace.Item';目标元素是“ Windows.UI.Xaml.Controls.TextBlock”(名称=“空”);目标属性为“文本”(类型为“字符串”)
x:Bind
使用相同的绑定:
<TextBlock Text="{x:Bind MyField}" />
ViewModel和项目定义
namespace MyNamespace
{
public class Item : INotifyPropertyChanged
{
public Item()
{
// ...
}
public readonly string MyField = "Foo";
// ...
}
public class MainPageViewModel : INotifyPropertyChanged
{
public MainPageViewModel()
{
// ...
}
private ItemsCollection _itemsCollection = new ItemsCollection();
public ObservableCollection<Item> Items
{
get { return _itemsCollection.Items; }
}
// ...
}
}
答案
[MyField
是C#类字段,无法与{Binding}
绑定。
以上是关于[BindingExpression尝试绑定到C#类字段时发生路径错误的主要内容,如果未能解决你的问题,请参考以下文章
BindingExpression 路径错误:在“对象”上找不到属性
System.Windows.Data 错误:40:BindingExpression 路径错误: