フォーカスが当たっているときにテキストボックスをクリアするにはどうすればよいですか?私はMVVMの方法でこれをやりたいそれが意味を持っている場合 - 私のTextBoxコントロールは、ViewModelのいくつかのプロパティにバインドされたTextプロパティを持っています。 TextBoxは "50,30zł"のようなsthを表示します。テキストを選択して削除して新しいテキストを書くことは、ユーザーには不快なので、Texboxがフォーカスされているときに古いテキストを消去したい。フォーカスしたときにテキストボックスをクリアする
答えて
あなた自身の動作を記述したり、制御することもできます。 最初の説明をしようとします。
まず、System.Windows.Interactivityアセンブリへの参照を追加する必要があります。
その後(動作になります)クラスを作成し、テンプレート(ジェネリック型)のパラメータがどのべき制御であるSystem.Windows.Interactivity.Behavior < System.Windows.Controls.TextBox>、からそれを引き出します私が説明したように動作します。例えば
:
class ClearOnFocusedBehavior : System.Windows.Interactivity.Behavior<System.Windows.Controls.TextBox>
{
private readonly RoutedEventHandler _onGotFocusHandler = (o, e) =>
{
((System.Windows.Controls.TextBox) o).Text =
string.Empty;
};
protected override void OnAttached()
{
AssociatedObject.GotFocus += _onGotFocusHandler;
}
protected override void OnDetaching()
{
AssociatedObject.GotFocus -= _onGotFocusHandler;
}
}
次は、最後に、適切なUIエレメント(私たちの場合はテキストボックス)に動作を追加XAMLで
<Window x:Class="ManagementSolution.Views.UpdatePersonsWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity">
//namespace with ur behaviors
xmlns:behaviors="clr-namespace:ManagementSolution.Helper.Behaviours"
//...
</Window>
をあなたの親ウィンドウで、次の参照宣言を置きます:
<TextBox x:Name="PersonFirstNameTextBox"
Grid.Column="1"
Margin="5,0"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
Style="{StaticResource TextBoxValidationStyle}"
TextWrapping="Wrap"
d:LayoutOverrides="Width, Height">
//behavior added as the content
<i:Interaction.Behaviors>
<behaviors:ClearOnFocusedBehavior />
</i:Interaction.Behaviors>
<TextBox.Text>
<Binding Path="PersonFirstName"
UpdateSourceTrigger="PropertyChanged"
ValidatesOnDataErrors="True">
<!--
<Binding.ValidationRules>
<rules:SingleWordNameValidationRule />
</Binding.ValidationRules>
-->
</Binding>
</TextBox.Text>
</TextBox>
textBox1.Clear();
それはテキストボックスにコンテンツ@Dmitry Martovoiから
別の方法はtextBox1 = ""; –
グレート答えをクリアします。
これは、(ブレンド動作ではなく)添付プロパティを使用する同じソリューションです。結合された振る舞いによって、単純なXAMLが作成されますが、単純なC#ではなく、ブレンドの振る舞いは逆です。
XAML:
は、それがフォーカスを受け取った場合、それ自体それを明確にするためにテキストボックスにbehaviors:MyTextBox.MyClearOnFocusedIfTextEqualsSearch="True"
を追加し、それがSearch
が含まれています。
<Window x:Class="MyApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
xmlns:behaviors="clr-namespace:MyApp">
<StackPanel Margin="10">
<!-- GotFocus="TextBox_GotFocus" -->
<TextBox x:Name="MyTextBox"
behaviors:MyTextBox.MyClearOnFocusedIfTextEqualsSearch="True"
HorizontalAlignment="Left"
Text="Search"
MinWidth="96" ></TextBox>
</StackPanel>
</Window>
そして添付プロパティ:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
namespace MyApp
{
public class MyTextBox : DependencyObject
{
public static readonly DependencyProperty MyClearOnFocusedIfTextEqualsSearchProperty = DependencyProperty.RegisterAttached(
"MyClearOnFocusedIfTextEqualsSearch",
typeof (bool),
typeof(MyTextBox),
new PropertyMetadata(default(bool), PropertyChangedCallback));
private static void PropertyChangedCallback(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
{
var textBox = dependencyObject as TextBox;
if (textBox != null)
{
if ((bool)dependencyPropertyChangedEventArgs.NewValue == true)
{
textBox.GotFocus += textBox_GotFocus;
}
}
}
private static void textBox_GotFocus(object sender, RoutedEventArgs e)
{
var textBox = sender as TextBox;
if (textBox != null)
{
if (textBox.Text.ToLower() == "search")
{
textBox.Text = "";
}
}
}
public static void SetMyClearOnFocusedIfTextEqualsSearch(DependencyObject element, bool value)
{
element.SetValue(MyClearOnFocusedIfTextEqualsSearchProperty, value);
}
public static bool GetMyClearOnFocusedIfTextEqualsSearch(DependencyObject element)
{
return (bool)element.GetValue(MyClearOnFocusedIfTextEqualsSearchProperty);
}
}
}
それは、この添付振る舞いを記述するために私に数分かかりました。あなたがattachedProperty
と入力すると、ReSharperはこれを行うのに最適なマクロを持っています。このコードのほとんどはあなたのために記入されます。
- 1. テキストボックスをクリックしたときにボタンをフォーカスする方法
- 2. jQuery:テキストボックスがクリアされたときに何かをトリガーする
- 3. ウィンドウがポップアップしたときにテキストボックスのフォーカスを維持する方法
- 4. アイテムオートコンプリートをクリックした後でフォーカスをクリア
- 5. テキストボックスにフォーカス
- 6. SelectedIndex == nullのときにテキストボックスをクリアする
- 7. テキストボックスにフォーカスを設定することができません
- 8. wp10:フライアウトが発生していないテキストボックスがフォーカスを失ったときにフォーカスを失った
- 9. フォーカスを受け取ったときにテキストボックスの背景を変更する(asp.net)
- 10. UWP - テキストボックスのフォーカスが外れているときにテキストボックスのハイライトを表示
- 11. Cのテキストボックスをクリアする
- 12. テキストボックスをクリアするとアクセスできなくなる
- 13. テキストボックスが無効になっているときにフォーカスを取得します。
- 14. フォーカスがテキストボックス内にあるときに警告
- 15. xまたはテキストボックス内のテキストボックスをクリアして
- 16. nsisでテキストボックスがフォーカスを失ったときにイベントを呼び出す方法
- 17. Angular2 - コンポーネント負荷にテキストボックスをフォーカスする
- 18. 投稿時にテキストボックスをクリア
- 19. テキストボックスのクリア
- 20. フォーカスと送信のフィールドをクリア
- 21. バックスペースを押したときに複数のテキストボックスをクリアするにはどうすればよいですか?
- 22. 要素をJqueryまたはハードコーディングしないテキストボックスをクリアする
- 23. テキストボックスをクリアすると以前の検索結果をクリアする方法
- 24. 印刷コマンドを実行した後にテキストボックスにフォーカスを設定
- 25. テキストボックス、テキストボックス、およびソースワークシートからアイテムを選択するときに行をクリアする
- 26. フォームのJS自動入力、テキストボックスのフォーカスがクリアされますか?
- 27. JavaScriptコード:フォーカス時にテキストボックスを空にしたい
- 28. 私は、データグリッドビューのセルをクリアし、フォーカスを維持したい
- 29. ネストされたユーザーコントロールのテキストボックスにフォーカスを設定する - Silverlight
- 30. 動的テキストボックスjqueryフォーカス
素晴らしいソリューション!私は以前は行動を使用していませんでした。どうも! – Arvangen