我有一个自定义控件,其中包含以下内容:
<TextBox Grid.Column="3" Text="{TemplateBinding SampleValue}" />
public static readonly DependencyProperty SampleValueProperty =
DependencyProperty.RegisterAttached("SampleValue", typeof(string), typeof(IdattFilterBox), new PropertyMetadata(null));
public string SampleValue
{
get { return GetValue(SampleValueProperty) as string; }
set { this.SetValue(SampleValueProperty, value); }
}
在一个UserControl中,我声明了我的自定义控件,其XAML如下:
<my:SampleBox SampleValue="{Binding SampleValue, Mode=TwoWay}" />
并且像这样使用ViewModel:
public string SampleValue
{
get
{
return this.sampleValue;
}
set
{
this.sampleValue = value;
}
}
我不关心VM上的INotifyPropertyChanged(所以不要告诉我它是什么 :))。 目前,它可以像我在VM中设置的那样,在文本框中显示文本。但是当我修改这个文本时,它没有返回到VM。
我该怎么办?我猜我得在自定义控件内编写一些代码?我应该处理TextBox PART并捕获LostFocus吗?还是使用TemplateBinding如何工作?