我在想要更改的开源应用程序中有一个自定义控件。
XAML 如下所示:
<controls:Scratchpad Grid.Row="1" Grid.Column="2"
Text="{Binding DataContext.KeyboardOutputService.Text, RelativeSource={RelativeSource AncestorType=controls:KeyboardHost}, Mode=OneWay}"/>
Scratchpad 控件的代码隐藏如下所示:
public class Scratchpad : UserControl
{
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text", typeof (string), typeof (Scratchpad), new PropertyMetadata(default(string)));
public string Text
{
get { return (string) GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
}
每次用户控件中的文本更改时,我都想触发一个事件处理程序。但是,没有可以在 XAML 中使用的 TextChanged 事件。
我的计划是做这样的事情:
<controls:Scratchpad Grid.Row="1" Grid.Column="2"
Text="{Binding DataContext.KeyboardOutputService.Text, RelativeSource={RelativeSource AncestorType=controls:KeyboardHost}, Mode=OneWay}"
textChanged="EventHandler"/>
但是,此自定义控件中不存在“textChanged”事件。
如您所见,ScratchPad 扩展了 UserControl。UserControl 还扩展了 ContentControl,这就是为什么我认为可以将文本放入此控件的原因,它们可能是我不知道的“ContentChanged”事件。
最好的,彼得。