我有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>
BTW,我不知道为什么必须为UserControl
设置一个名称,以便我可以在ElementName=thisUserControl
中使用它进行绑定。 (我认为如果没有提供this
,默认情况下应为ElementName
我还为此UserControl定义了customer属性,还有一些其他代码:
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
?
答案 0 :(得分:2)
Bindable(true)
是一种告诉GUI设计者属性支持双向绑定的方法。但是,要实际实现双向绑定,您必须为该属性实现INotifyPropertyChanged
。
此外,如果绑定中未提供ElementName
,则默认为绑定到DataContext
。