XAML(WPF)属性没有bool值的可访问setter

时间:2017-04-08 08:26:00

标签: c# wpf xaml data-binding

可能只是一些愚蠢的错误,但我似乎无法找到它。问题是:编译器说属性" 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; }
        }

1 个答案:

答案 0 :(得分:0)

我知道这是一个愚蠢的错误。问题是XAML中的这个字符串:

xmlns:cnsmr="clr-namespace:BindingTests;assembly=BindingTests"

我是从一些教程中得到的,只是盲目地复制了。删除&#34 ;; assembly = BindingTests&#34;部分现在一切都很好。 现在XAML看起来像这样:

xmlns:cnsmr="clr-namespace:BindingTests"