Я наткнулся на следующую проблему. У меня есть флажок, свойство IsChecked
которого привязано к свойству CLR в моем классе MainWindow
. Вот исходный код.
Код позади (MainWindow.xaml.cs
):
namespace MenuItemBindingTest {
public partial class MainWindow : Window, INotifyPropertyChanged {
private bool m_backedVariable = false;
public bool IsPressAndHoldEnabled {
get { return this.m_backedVariable; }
set {
this.m_backedVariable = value;
OnPropertyChanged("IsPressAndHoldEnabled");
MessageBox.Show("Item changed: " + this.m_backedVariable);
}
}
public MainWindow() {
InitializeComponent();
this.m_checkbox.DataContext = this;
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName) {
if (this.PropertyChanged != null) {
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
}
XAML-код (MainWindow.xaml
):
<Window x:Class="MenuItemBindingTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Binding Problem Test" Width="525" Height="350">
<DockPanel>
<CheckBox x:Name="m_checkbox"
IsChecked="{Binding IsPressAndHoldEnabled}"
HorizontalAlignment="Center" VerticalAlignment="Center"
Content="Is Press and Hold enabled"/>
</DockPanel>
</Window>
Проблема теперь в том, что метод доступа set для свойства IsPressAndHoldEnabled
никогда не вызывается (т. Е. Окно сообщения никогда не отображается), когда пользователь устанавливает или снимает флажок. Это работает, однако, работает, когда я переименовываю свойство во что-то другое, например IsPressAndHoldEnabled2
.
Теперь у меня вопрос: почему я не могу использовать IsPressAndHoldEnabled
в качестве названия для моей собственности? Это как-то связано со свойством Stylus.IsPressAndHoldEnabled
существующий?