我定義了一個自定義文本框,如下所示: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