Прошло больше года с тех пор, как я написал последнюю статью. WPF слишком велик, и мне нужно написать слишком много вещей. Я по-прежнему сосредоточусь на пользовательских элементах управления, чтобы подробно остановиться на связанных с ними технических моментах. в обсуждении Мы обсудим эту статью. Самое важное — это свойства зависимостей WPF. Друзья, которые сталкивались с этим, должны иметь некоторое представление об этом, но прежде чем мы поговорим о свойствах зависимостей WPF, давайте посмотрим, как работают свойства. в .net использовались до появления WPF.
Распространенные проблемы с атрибутами
основные свойства С#
Свойства настраиваемого элемента управления ASP.NET
Свойства пользовательского элемента управления WinForm
Свойства пользовательского элемента управления Javascript
основные свойства С#
пространство имен WPFControlTutorialPart2_Basic
{
общественный класс Человек
{
частная строка _name;
общедоступная строка Имя
{
получить {вернуть _имя;
установить { _name = значение }
}
//автоматические свойства
общественный ИНТ Возраст {получить;
}
}
Вышеупомянутое следует рассматривать как самые основные атрибуты C#, и каждый с ними знаком.
Примечание. Свойства по умолчанию не инициализируются, иначе может возникнуть множество неизвестных ошибок.
(Вы можете прочитать следующее. Если вы знакомы со следующими технологиями, это на самом деле очень просто)
Свойства настраиваемого элемента управления ASP.NET
пространство имен WPFControlTutorialPart2_WebApp
{
общедоступный класс WebFromControl: WebControl
{
частная строка _controlName;
общедоступная строка ControlName
{
получать
{
вернуть _controlName;
}
набор
{
_controlName = значение;
}
}
защищенное переопределение void RenderContents (вывод HtmlTextWriter)
{
output.Write("Имя элемента управления:"+ControlName);
}
}
}
Вышеуказанное представляет собой простой пользовательский элемент управления веб-сервером.
Элемент управления asp.net ориентирован на рендеринг. Метод RenderContents будет вызываться каждый раз при обновлении страницы, поэтому независимо от того, изменились свойства или нет, они будут повторно отображаться. То есть свойство не требуется. изменения для уведомления о перерисовке пользовательского интерфейса.
Примечание. Если атрибут ControlName обязательно должен иметь значение для обеспечения достоверности входного результата, его можно обработать в методе get.
получать
{
если (_controlName == null) _controlName = string.Empty;
вернуть _controlName;
}
Свойства пользовательского элемента управления WinForm
При изменении свойства оно не перерисовывается. Необходимо вручную вызвать метод Invalidate, чтобы ввести метод OnPaint для перерисовки.
Примечание. Если вы хотите перерисовать интерфейс, необходимо вручную вызвать метод
Свойства пользовательского элемента управления JavaScript
<div id="demoDiv" style="background-color: Red">привет</div>
<скрипт>
функция ElementControl(elementName) {
this.element = document.getElementById(elementName);
}
ElementControl.prototype.setWidth = функция (ширина) {
this.element.style.width = ширина;
}
вар obj = новый ElementControl («demoDiv»);
obj.setWidth("привет");
</скрипт>
Типы переменных JavaScript не имеют строгих типов. Например, при установке ширины dom тип может быть только целым числом. Если значение передается как строка, произойдет ошибка (конечно, это искусственно).
(Я не знаю, чувствуют ли это люди, которые использовали интерфейсные элементы управления js. Определение свойства, а затем переназначение и перерисовка элемента управления — болезненная вещь. Его нужно настраивать вручную, и это повлияет на всю конструкцию элемента управления. )
Примечание. Проверьте правильность назначений атрибутов.
Из приведенных выше примеров мы видим, что чистые атрибуты не могут удовлетворить потребности программы.
Вышеуказанные требования необходимы, встречаются часто и очень часто.
Стандартизированные решения
Вышеизложенное представляет ряд проблем с атрибутами. Если есть проблемы, будут упрощенные решения.
Ниже приводится личное резюме:
Когда технология относительно сложна, кто-то придет и определит набор стандартов, чтобы упростить технологию и повысить эффективность производства.
Независимо от того, насколько тщательно проектировщик обдумывает это, как только стандарт будет определен, гибкость будет потеряна.
Стандарты могут противоречить вашим личным привычкам. Вы должны научиться принимать стандарты и вернуться к теме WPF. Тогда решением в WPF является свойство зависимостей (DependencyProperty).
Хорошо, эта статья — всего лишь введение. Если вы столкнулись с этими проблемами при использовании атрибутов, у вас возникнут некоторые чувства.
Если вы понимаете, что описанные выше проблемы с атрибутами действительно существуют, то эта статья выполнила свою задачу.
Эта статья не предназначена для дальнейшего расширения. В следующей статье снова будет представлена система свойств зависимостей WPF.
Все желающие могут обсудить.