2015-08-02 5 views
0

Каково реальное использование использования/создания свойства Dependency в реальном сценарии?Свойства зависимостей WPF и свойство InotifyChanged

Если мы используем цель уведомления, я выберу свойство InotifyChanged.

Я никогда не видел/не использовал реальное использование недвижимости Dependency в проектах реального времени?

Может ли кто-нибудь сказать мне, где требуется DP в сценариях реального времени?

+0

Что такое использование DP в WPF, если InotifyCHanged существует –

ответ

2

Если вы создали пользовательский элемент управления со свойствами, которые вы хотите быть связываемого (например, следующий код), вы не можете использовать INotifyPropertyChanged и вы должны использовать DependencyProperty.

Предположим, у вас есть UserControl вроде этого:

public partial class MyUserControl : UserControl 
{ 
    public List<ItemViewModel> ItemsSource 
    { 
     get { return (List<ItemViewModel>)GetValue(ItemsSourceProperty); } 
     set { SetValue(ItemsSourceProperty, value); } 
    } 

    // Using a DependencyProperty as the backing store for ItemsSource. This enables animation, styling, binding, etc... 
    public static readonly DependencyProperty ItemsSourceProperty = 
     DependencyProperty.Register("ItemsSource", typeof(List<ItemViewModel>), typeof(MyUserControl), new PropertyMetadata(null)); 
} 

Затем вы можете установить привязку к ItemsSource (который является DependencyProperty) в главном окне таким образом:

<uc:MyUserControl ItemsSource="{Binding MyItems}" /> 

В резюме:

В гене аль, переплетные выглядит следующим образом: T = "{Binding S}"

  • T является Target связывания.
  • S является Источник переплета.

  • T допускается быть DependencyProperty. например:

    MyDependencyProperty = "{Binding} что-то"

  • S часто является INPC-Недвижимость. например:

    что-то = "{Binding MyINPCProperty}"

+0

Почему это не сработает? –

+0

Если я также реализую свойство InotifyCHanges в пользовательском элементе управления, могу ли я также связать его? правильно ? если вы создали ItemViewModel, то почему вы создаете DP? –

+0

Мой основной вопрос, почему вы создали ITEMSOURCE как DP? Я хочу понять реальное использование ДП на уровне внедрения? –

1

От MSDN:

Целью свойств зависимостей является обеспечить способ для вычисления значение свойства, основанного на значение других входов. Эти другие входы могут включать в себя системные свойства, такие как темы и пользовательские предпочтения, а также механизмы определения времени как во времени, такие как привязка данных и анимации/раскадровки, многоразовые шаблоны, такие как как ресурсы и стили, или значения, известные через родительские -child отношения с другими элементами в дереве элементов.Кроме того, может быть реализовано свойство зависимостей , чтобы обеспечить автономные значения , значения по умолчанию, обратные вызовы, которые отслеживают изменения других свойств , и систему, которая может вызывать значения свойств на основе потенциальной информации о времени выполнения. Производные классы также могут изменять некоторые специфические характеристики существующего свойства, переопределяя метаданные свойств зависимостей, вместо того, чтобы переопределять фактическую реализацию существующих свойств или создание новых свойств.

Смежные вопросы