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