ПредишенСледващото

Зависимост имоти - е вид имот, който се простира на CLR имота. Докато CLR имот се отчита директно от вашия член на класа, Зависимост имот ще бъде решен динамично, когато се обадите на GetValue (), който си обект получава по наследство от базов клас DependencyObject а. В този раздел ще унищожи зависимостта свойства и обяснява тяхното използване е концептуално, така и с помощта на код примери.

Стандартни зависимости собственост

Почти всички силно WPF контрол използват зависимостта собственост. Зависимост имот позволява използването на много функции, WPF които не са възможни с помощта на стандартни CLR свойства, включително, наред с други неща, подкрепа за стилове, анимации, данни обвързващи, наследство стойност и уведомяване на климата.

TextBox.Text имот - един прост пример, където стандартен зависимостта собственост. Тук, данните могат да бъдат задължителни, ако текстът е стандартен CLR собственост.

Зависимост свойства могат да се определят само в класове, получени от DependencyObject. като FrameworkElement. Контрол, и така нататък. Г.

Един от най-бързите начини за създаване на стандартни за издръжка на имоти без да е необходимо да запомните синтаксиса е да се използва фрагмент «propdp», пише propdp и натиснете Tab. фрагмент от код ще бъде добавен, което след това може да бъде променен в зависимост от вашите нужди:

За да направите промяната, трябва да се направи в раздела до различни части на част от код, включително актуализирането на името на имущество, вида имот, съдържащ тип клас, както и стойностите по подразбиране.

Има няколко важни конвенции / правила:

Създаване на CLR собственост на зависимостта собственост. Този имот е използван в кода на вашето съоръжение или за други потребители. Той трябва да се обадите на GetValue и SetValue така че потребителите не се нуждаят от него.

Име десен зависимостта собственост. Невярно DependencyProperty бъде публично статично само за четене. Той трябва да има име, което съвпада с името на CLR свойства и сложи край на "Недвижими имоти", като например текст и TextProperty.

Да не се добавят допълнителни логика да CLR свойства инструмент за конфигуриране. Зависимост свойства на системата (и по-специално XAML) не използват CLR имота. Ако искате да се извършват определени действия при стойност имот промени, трябва да се предоставят за обратно повикване чрез PropertyMetadata.

За да се елиминира необходимостта да се уточни Mode = двупосочна в автомати (подобно поведение TextBox.Text), актуализирате кода си да използват вместо FrameworkPropertyMetadata PropertyMetadata и да определи съответната знаме:

Свързани свойства на зависимост

Приложено имот - това е зависимостта собственост, която може да се приложи към всеки DependencyObject за подобряване на поведението на различните контроли, или услугите, които са наясно с качествата.

Някои примери за използването на приложените свойства включват:

  1. Наличието на елемент итерация на родител чрез децата си, а някои действия по отношение на децата. Например, Решетка контрол използва свойствата на свързан Grid.Row. Grid.Column. Grid.RowSpan и Grid.ColumnSpan за поставяне на елементи в редове и колони.
  2. Добавете визуални ефекти към съществуващите контроли с шаблони, като например добавяне на водни знаци за празни текстови полета в молбата, без да подклас текстовото поле.
  3. Предоставяне на общи услуги или функции за някои или всички от съществуващите контроли, като ToolTipService или FocusManager. Те обикновено се наричат ​​свързани поведения.
  4. Когато искате да наследят по визуална дърво, например, подобно на поведението на DataContext.

Това още веднъж показва какво се случва, ако използвате Grid.

Grid.Column не е собственост, която съществува във етикет или текстовото поле. По-скоро, а контролните мрежа сканира дъщерните елементи и ги подрежда в съответствие с ценностите затворени свойства.

Ние ще продължим да използваме Grid за този пример. Определяне Grid.Column показани по-долу, но DependencyPropertyChangedEventHandler изключени за краткост.

Тъй прикрепени свойства могат да бъдат прикрепени към широк спектър от елементи, те не могат да бъдат изпълнени като CLR свойства. Вместо пара въведени статични методи.

Следователно, за разлика от стандартните зависимост свойства, свързани свойства могат да бъдат определени в класове, които не са получени от DependencyObject.

Той също така използва същите конвенции за именуване, които се прилагат към обичайните свойства на зависимости: RowProperty зависимост имот има подходящите методи и GetRow SetRow.

Въпреки, че наследството на имоти може да се появи за работа необвързан със зависимостите свойства наследство поведение за необвързани имоти през определени граници на елементи в дървото изпълнява неуточнен момент. Винаги използвайте RegisterAttached да се регистрирате имоти, където можете да определят в рамките на метаданни от наследството.

Зависимост имоти само за четене

Зависимост имот само за четене като нормален в зависимост от имота, но тя е структурирана така, че да са стойностите, определени от страни извън контрол. Това работи добре, ако имате имот, който е предназначен изключително за информирането на потребителите, например, или IsMouseOver IsKeyboardFocusWithin.

Подобно на стандартните качества на зависимостта отношения за имот само за четене трябва да бъде дефиниран в клас, който произлиза от DependencyObject.

Тук се прилагат същите условия, които важат за конвенционален зависимостта собственост, но с две основни разлики:

  1. DependencyProperty идва от частния DependencyPropertyKey.
  2. CLR защитена собственост или частна собственост, а не публично.

Моля, имайте предвид, че инкубатора MyPropertyPropertyKey минава не MyPropertyProperty в метода на SetValue. От имота се определя като само за четене, всеки опит да се използва SetValue в имота трябва да се използва с претоварването, което отнема DependencyPropertyKey; В противен случай, той ще InvalidOperationException.

WPF уроци

Свързани статии

Подкрепете проекта - споделете линка, благодаря!