Я создал пользовательский элемент управления с, среди прочего, следующее:Как привязать к настраиваемого свойства в элементе управления 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, я (стараюсь) использовать связывание для установки Включено свойство:
<MyButton x:Name="myButtom1" Enabled="{Binding CanEnableButton}"/>
Я знаю, что связывают между моим контролем и базовой модели данных является действительным и работает, как я могу связать «IsEnabled» (уроженцем свойство основного UserControl), и она работает, как ожидалось. Однако мое свойство Enabled никогда не устанавливается с помощью указанной привязки. Я поставил точки останова на свой набор свойств/get, и они никогда не попадают в цель.
Я могу только визуализировать Я пропустил что-то, связанное с привязкой в моем пользовательском контроле. Кто-нибудь может понять, что?
Я попытался реализовать INotifyPropertyChanged на моем элементе управления (и вызвал событие PropertyChanged из моего Enabled setter) ... но это не исправить.
[BTW: Если вы задаетесь вопросом «Почему?»: Я не могу перехватить изменения в состоянии IsEnabled базового элемента управления, поэтому я решил реализовать и использовать свою собственную версию свойства Enable/disable (которое Я позвонил Enabled) - один, где я мог бы подключить свой собственный код к устройству настройки свойств.
Я думаю, что использование встроенного события IsEnabledChanged является лучшим выбором для реализации другого свойства «включено» в элементе управления. (См. Мой ответ). – WiredPrairie
Спасибо. Это полезно знать. Как указано ниже, использование существующего события с включенным изменением - это то, что я должен (и будет) делать. Тем не менее, я получаю визуализацию, в какой-то момент мне нужно будет создать свойство bindable в элементе управления, и в то время вы будете неоценимы. – Trevor