Объект, ориентируемый, программируя принципы, говорит, что, внутренние работы класса должны быть скрыты от внешнего мира. Если Вы представляете поле, Вы в сущности представляете внутреннюю реализацию класса. Поэтому мы обертываем поля со Свойствами (или методы в случае Java), чтобы дать нам способность изменить реализацию, не повреждая код в зависимости от нас. Наблюдение, поскольку мы можем поместить логику в Свойство также, позволяет нам выполнять логику проверки и т.д., если нам нужен он. C# 3 имеет возможно запутывающее понятие автосвойств. Это позволяет нам просто определять Свойство, и компилятор C#3 генерирует частное поле для нас.
public class Person
{
private string _name;
public string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
public int Age{get;set;} //AutoProperty generates private field for us
}
Возможно, вам придется опубликовать больше кода, потому что я только что создал простой пример, и он отлично работает. Мой DataTemplate
содержит только TextBox
, мой DataTemplateSelector
всегда возвращает этот DataTemplate
, а также ContentControl
и класс, производный от ContentControl
, используйте мой DataTemplateSelector
. В обоих случаях отображалось текстовое поле
.