LineCount
何らかの目的で、複数行のテキスト ボックスが変更さ
れるたびにイベントを発生させたいと
考えました。依存関係プロパティをにバインドすると、これを達成できると思いました。 TextBox.LineCount
以下はコード サンプルです。
XAML
<local:MyTextBox Margin="5,65,5,5" x:Name="txtBox"
AcceptsReturn="True" AcceptsTab="False"
MyProperty="{Binding LineCount, RelativeSource={RelativeSource Self}}" />
コードビハインド
public class MyTextBox : TextBox
{
public MyTextBox()
{
DataContext = this;
}
public int MyProperty
{
get
{
return (int)this.GetValue(LineCountProperty);
}
set
{
this.SetValue(LineCountProperty, value);
}
}
public static readonly DependencyProperty LineCountProperty =
DependencyProperty.Register(
"MyProperty",
typeof(int),
typeof(TextBox),
new FrameworkPropertyMetadata(
new PropertyChangedCallback(
(dp, args) => { MessageBox.Show(args.NewValue.ToString()); })
));
}
メッセージボックスは、行数が変更された後ではなく、フォームが読み込まれたときにのみ表示されます。
ただし、Binding をMyProperty
TextBox からLineCount
変更Text
すると、テキストが変更されるたびに PropertyChangedEvent が発生します。
TextChanged イベントハンドラーからカスタム LineCount 変更イベントを発生させるDepedencyProperties
ことができると確信していますが、より効率的であると信じているため、経由でこれを実行したいと考えています。