変更したいオープンソースアプリケーションにカスタムコントロールがあります。UserControl WPFを拡張するカスタムコントロール内のTextChangedまたはContentChangedイベント
XAMLは次のようになります。
<controls:Scratchpad Grid.Row="1" Grid.Column="2"
Text="{Binding DataContext.KeyboardOutputService.Text, RelativeSource={RelativeSource AncestorType=controls:KeyboardHost}, Mode=OneWay}"/>
スクラッチパッド制御のための分離コードは次のようになります。私はたびに、ユーザーコントロール内のテキストの変更をイベント・ハンドラをトリガしたい
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イベントはありません。 「textChanged」イベントは、このカスタムコントロールに存在しないただし
<controls:Scratchpad Grid.Row="1" Grid.Column="2"
Text="{Binding DataContext.KeyboardOutputService.Text, RelativeSource={RelativeSource AncestorType=controls:KeyboardHost}, Mode=OneWay}"
textChanged="EventHandler"/>
:
私の計画は、このような何かをすることでした。
ご覧のとおり、ScratchPadはUserControlを拡張しています。 UserControlもContentControlを継承しています。そのため、このコントロールにテキストを挿入することは可能ですが、私が知らない「ContentChanged」イベントになる可能性があります。
ベスト、ピーター。
[カスタムルーテッドイベントの作成方法](https://msdn.microsoft.com/en-us/library/ms752288(v = vs.110).aspx)を参照して、カスタムTextChangedEventをTextプロパティのPropertyChangedCallback(Ericの答えに示されています)。 – Clemens
通常のCLRイベントを宣言し、PropertyChangedCallbackで発生させます。 – Clemens