Если вы создали пользовательский элемент управления со свойствами, которые вы хотите быть связываемого (например, следующий код), вы не можете использовать 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}"
Что такое использование DP в WPF, если InotifyCHanged существует –