0
我有用户控件,命名为thisUserControl
,它具有如下面的XAML代码所示两个控件:混乱Silverlight的用户控件自定义属性结合
<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
)
我还定义了客户属性此用户控件,与其他一些代码:
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
?
我添加了这个'DataContext =“{Binding RelativeSource = {RelativeSource Self}}”'作为默认绑定,并且它可以工作。那Bindable(真)真的很混乱。我也试过INotifyPropertyChanged,它也可以。但INotifyPropertyChanged不适用于MultiBinding:http://www.codeproject.com/KB/silverlight/SilverlightMultiBinding.aspx – 2012-01-01 06:57:26
对不起。它也适用于MultiBinding。 – 2012-01-01 08:13:51