我正在开发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");
}
}
}
答案 0 :(得分:1)
XAML解析器根据提供的XML构造对象并设置其属性。它与来自不同命名空间的任何其他类没有什么不同,它们可能希望创建用户控件并设置其属性。如果没有反射,C#语言的约束要求这些属性是公共的,以便设置它们。