Я пытался привязать содержимое текстового поля к свойству, которое я создал внутри элемента управления, но безуспешно.Я нашел способ сделать это иначе, но это запутанно, и я бы предпочел что-то попроще.Во всяком случае, это окончательный код:
public partial class DateListEditor : UserControl, INotifyPropertyChanged {
private int _newMonth;
public int newMonth {
get { return _newMonth; }
set {
if(value < 1 || value > 12)
throw new Exception("Invalid month");
_newMonth = value;
NotifyPropertyChanged("newMonth");
}
}
public DateListEditor() {
InitializeComponent();
DataContext = this;
newMonth = DateTime.Now.Month;
}
// ...
Тогда в XAML:
<TextBox x:Name="uiMonth" Text="{Binding newMonth, Mode=TwoWay, ValidatesOnExceptions=True}"/>
Эта вещь работает.Он будет предварительно заполнять текстовое поле текущим месяцем и проверять его, когда фокус потерян: отлично.
Но как мне избежать строки XAML и сделать все из кода?Кажется, я не могу решить это.Я пробовал этот код, но ничего не происходит:
InitializeComponent();
Binding b = new Binding("Text") {
Source = newMonth,
ValidatesOnExceptions = true,
Mode = BindingMode.TwoWay,
};
uiMonth.SetBinding(TextBox.TextProperty, b);
DataContext = this;
Как я могу сделать это без установки привязки в XAML?