У меня есть UserControl с именем thisUserControl
, он имеет два элемента управления, как показано в следующем коде XAML:
<UserControl
...
x:Name="thisUserControl">
<StackPanel x:Name="LayoutRoot">
<Button x:Name="btnChangeString" Content="Change String" Click="btnChangeString_Click" />
<TextBlock Text="{Binding Path=StringProperty, ElementName=thisUserControl}" />
</StackPanel>
</UserControl>
Кстати, я не знаю, почему я должен установить имя для UserControl
, чтобы я мог использовать его для Binding в ElementName=thisUserControl
. (Я думал, что это должно быть this
по умолчанию, если ElementName
не предоставлено)
Я также определил свойство customer для этого UserControl с некоторым другим кодом:
private string sp = "A String Here";
[Bindable(true)]
public string StringProperty
{
get { return sp; }
set { sp = value; }
}
private void btnChangeString_Click(object sender, RoutedEventArgs e)
{
StringProperty = "Something Else";
}
Когда я компилирую и запускаю его, нажимаю кнопку «Изменить строку», ничего не происходит.
Кажется, Bindable(true)
вообще не работает. Что это значит Bindable(true)
?
Существует ли простой способ сделать привязку пользовательского свойства? Позвольте этому UserControl наследовать INotifyPropertyChanged
? или используйте DependencyProperty
?