为什么WPF用户控件属性必须公开才能在XAML中使用它们?

时间:2012-02-27 09:28:53

标签: wpf binding user-controls

我正在开发WPF自定义控件。该控件具有一个属性,该属性在代码中设置并在XAML中使用。此属性必须是公共的,因为它可以通过绑定在XAML上工作。如果只有一个班级,为什么会这样?

<TextBlock Text="{Binding ElementName=PolicyBoxName, Path=FileNames[0]}" />

private string[] _fileNames;
        public string[] FileNames
        {
            get
            {
                return _fileNames;
            }
            set
            {
                if (value != _fileNames)
                {
                    _fileNames = value;
                    OnPropertyChanged("FileNames");
                }
            }
        }

1 个答案:

答案 0 :(得分:1)

XAML解析器根据提供的XML构造对象并设置其属性。它与来自不同命名空间的任何其他类没有什么不同,它们可能希望创建用户控件并设置其属性。如果没有反射,C#语言的约束要求这些属性是公共的,以便设置它们。