我定义了一个自定义文本框,如下所示:WPF绑定到一个自定义属性自定义控制
public class CustomTextBox : TextBox
{
public static DependencyProperty CustomTextProperty =
DependencyProperty.Register("CustomText", typeof(string),
typeof(CustomTextBox));
static CustomTextBox()
{
TextProperty.OverrideMetadata(typeof(SMSTextBox),
new FrameworkPropertyMetadata(string.Empty,
FrameworkPropertyMetadataOptions.Journal |
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
new PropertyChangedCallback(CustomTextBox_OnTextPropertyChanged));
}
public string CustomText
{
get { return (string)GetValue(CustomTextProperty); }
set { SetValue(CustomTextProperty, value); }
}
private static void CustomTextBox_OnTextPropertyChanged(DependencyObject d,
DependencyPropertyChangedEventArgs e)
{
CustomTextBox customTextBox = d as CustomTextBox;
customTextBox.SetValue(CustomTextProperty, e.NewValue);
}
}
我绑定在XAML自定义文本属性 -
<local:CustomTextBox CustomText="{Binding ViewModelProperty}" />
的我面临的问题是,当我在CustomTextBox中输入任何内容时,更改不会反映在ViewModelProperty中,即ViewModelProperty没有更新。 CustomTextProperty正在更新,但我想我需要做一些额外的事情来完成绑定工作。
我没有做什么?我将不胜感激这方面的帮助。
谢谢
你想用PropertyChanged回调来完成什么?对我来说,它看起来像你只是设置一个新的价值,这就是为什么这个回调被称为,它再次幸运地被wpf捕获,否则你会有一个无限循环。 – dowhilefor