0

ラベル付きの顧客ユーザーコントロールがありますTextBox(ラベルが重なっている aと aBorderについてラップされています)。UserControl から呼び出されたときに関数を機能させる方法について、いくつかの (機能する) 例を見つけています。LabelTextBoxTextBoxTextChanged

テキストボックスのスニペットのみ:

<TextBox 
FontSize="{Binding Path=DefaultFontSize}"
Style="{StaticResource WatermarkTextBox}"
Padding="{Binding Path=TextPadding}"
Tag="{Binding Path=TextValue}"
/>

ボタンの Click イベントと同じように使用してみRoutedEventHandlerましたが、うまくいきませんでした。必要なウィンドウで使用するとしたら、どうすれば取得できますか。

<MyControl:LabeledTextBox
    TextBoxChange="Some_Event"
    TextValue="{Binding SomethingOrOther}"
 />

正しく起動し、必要な機能を実行すること

4

2 に答える 2

3

この質問は本当に不明確です。ユーザー コントロールTextChangedで、テキストがTextBox変更されたときに発生するイベントをサポートしますか? その場合は、コード ビハインドで実装する必要があります。

まず、イベントを宣言します。

public event TextChangedEventHandler TextChanged;

次に、イベント ハンドラーを に追加しますTextBox

<TextBox TextChanged="TextBox_TextChanged" ... />

コードビハインドで:

private void TextBox_TextChanged(object sender, TextChangedEventArgs args)
{
   TextChangedEventHandler h = TextChanged;
   if (h != null)
   {
      h(this, args);
   }
}
于 2011-06-23T19:15:30.723 に答える
2

MVVM を使用している場合 (またはTextValueバインディングがアクセスして編集できるものにバインドしている場合) は、実行するロジックをセッターに入れることができます。

したがって、プロパティにバインドしているとしましょうMyTextBoxValue。XAML でバインド モードを双方向に設定し、セッターでロジックを配置するか、別のメソッドを呼び出します。

入力するたびにコードを起動するUpdateSourceTrigger=PropertyChanged場合は XAML で設定し、テキスト入力が「完了」したときにのみコードを起動する場合は を設定しUpdateSourceTrigger=LostFocusます。

于 2011-06-23T18:23:46.273 に答える