可能只是一些愚蠢的错误,但我似乎无法找到它。问题是:编译器说属性" IsMarried"没有可访问的二传手,我不知道" access"的含义,因为那里肯定有一个二传手。
XAML:
<Window x:Class="BindingTests.MainWindow"
...
xmlns:cnsmr="clr-namespace:BindingTests;assembly=BindingTests">
<Window.Resources>
<cnsmr:CustomerViewModel x:Key="CustomerViewModel" ... IsMarried="true"/>
</Window.Resources>
Customer.cs:
namespace BindingTests
{
class Customer
{
...
public string Married { get; set; }
...
}
}
CustomerViewModel.cs
namespace BindingTests
{
class CustomerViewModel
{
private Customer obj = new Customer();
...
public bool IsMarried
{
get
{
if (obj.Married == "Married")
{
return true;
}
else
{
return false;
}
}
set
{
if (value)
{
obj.Married = "Married";
}
else
{
obj.Married = "Not Married";
}
}
}
...
只是为了澄清,我无法看到这个setter与另一个现有的setter有何不同,后者不会出现任何错误: 还有CustomerViewModel.cs:
public string TxtCustomerName
{
get { return obj.CustomerName; }
set { obj.CustomerName = value; }
}
答案 0 :(得分:0)
我知道这是一个愚蠢的错误。问题是XAML中的这个字符串:
xmlns:cnsmr="clr-namespace:BindingTests;assembly=BindingTests"
我是从一些教程中得到的,只是盲目地复制了。删除&#34 ;; assembly = BindingTests&#34;部分现在一切都很好。 现在XAML看起来像这样:
xmlns:cnsmr="clr-namespace:BindingTests"