0

我有 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 in 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

4

1 回答 1

2

Bindable(true)是一种告诉 GUI 设计者属性支持双向绑定的方法。但是,要实际实现双向绑定,您必须实现INotifyPropertyChanged该属性。

此外,如果ElementName未在绑定中提供,则默认为绑定到DataContext.

于 2012-01-01T06:44:35.657 回答