我已經創建了一個自定義的控制,除其他在Silverlight自定義控件的自定義屬性,如下:如何綁定到
public partial class MyButton : UserControl
{
public bool Enabled
{
get { return (bool)GetValue(EnabledProperty); }
set {
SetValue(EnabledProperty, value);
SomeOtherStuff();
}
}
}
public static readonly DependencyProperty EnabledProperty =
DependencyProperty.Register("Enabled", typeof(bool), typeof(MyButton), new PropertyMetadata(true));
public static void SetEnabled(DependencyObject obj, bool value)
{
obj.SetValue(EnabledProperty, value);
}
public static bool GetEnabled(DependencyObject obj)
{
return (bool) obj.GetValue(EnabledProperty);
}
}
在我的XAML中,我(嘗試)使用時綁定設置Enabled屬性:
<MyButton x:Name="myButtom1" Enabled="{Binding CanEnableButton}"/>
我知道我的控制和基礎數據模型之間的結合是有效的和工作,我可以綁定「的IsEnabled」(潛在用戶控件的原生屬性),它按預期工作。但是,我的Enabled屬性從來沒有通過上面的綁定來設置。我在我的財產設置/獲得了斷點,他們從來沒有受到打擊。
我只能成像我錯過了與我的自定義控件中的綁定相關的內容。任何人都能看到什麼?
我試着在我的控件上實現INotifyPropertyChanged(並從我啓用的setter中調用PropertyChanged事件)......但那並沒有解決它。我不能攔截基本控件的IsEnabled狀態的變化,所以我決定實現並使用我自己版本的啓用/禁用屬性(它我打電話給Enabled) - 一個我可以將自己的代碼插入屬性設置器的地方]
我認爲使用內建的IsEnabledChanged事件是在控件上實現另一個「啓用」屬性的更好選擇。 (看我的答案)。 – WiredPrairie 2010-07-25 21:34:16
謝謝。這對知道有用。正如下面所指出的那樣,利用現有的Enabled changed事件是我應該(而且將會)正在做的事情。然而,我的成像我需要在某個時候在控件上創建一個可綁定的屬性,並且當時的建議將非常寶貴。 – Trevor 2010-07-26 07:15:47