2011-05-18 9 views
0

私はsilverlightのテキストボックスに機能が必要ですが、stalkoverflowのAsk Question "Title"テキストボックスにあるようなsimillarの機能が必要です。テキストボックスにテキストがない場合、「検索」が表示されます。ユーザーがテキストボックスをクリックすると、テキストボックスのテキストが空になり、テキストが空であればテキストボックスにフォーカスが失われ、「検索」が表示されます。私は次のコードを書いたが、すべての可能な条件を扱うコードはありますか?silverlightの検索テキストボックスのデフォルトテキスト

http://wpftoolkit.codeplex.com/wikipage?title=WatermarkTextBox&referringTitle=Home

ソースはあなたので、提供されています:あなたはWPFおよびWPFとSilverlightの間の違いに精通している場合

private void txtAvailable_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
      txtAvailable.Text = ""; 
} 

private void txtAvailable_LostFocus(object sender, RoutedEventArgs e) 
{ 
      if (txtAvailable.Text.Trim() == "") 
       txtAvailable.Text = "Search"; 
} 

答えて

1

あなたは、テキストボックスのGotFocusとのLostFocusイベントを使用することができます - 彼らはあなたのポテンシャルのすべてをオフにカバーするのに十分汎用的でなければなりません。..

を使用すると、すべてのキーストロークを検索したい場合specialnessが来る - あなたは、有効および無効にする必要がありそれらのイベントを検索します。

private bool IsBusy 
    { 
     get; 
     set; 
    } 

    private bool CanSearch 
    { 
     get; 
     set; 
    } 

    public Constructor() 
    { 
     InitializeComponent(); 

     this.IsBusy = false; 

     txtSearch.GotFocus += new RoutedEventHandler(txtSearch_GotFocus); 
     txtSearch.LostFocus += new RoutedEventHandler(txtSearch_LostFocus); 
     txtSearch.KeyUp += new System.Windows.Input.KeyEventHandler(txtSearch_KeyUp); 
     txtSearch.Text = "Search »"; 
    } 

    private void txtSearch_LostFocus(object sender, RoutedEventArgs e) 
    { 
     if(string.IsNullOrEmpty(txtSearch.Text)) 
     { 
      CanSearch = false; 
      txtSearch.Text = "Search »"; 
     } 
    } 

    private void txtSearch_GotFocus(object sender, RoutedEventArgs e) 
    { 
     txtSearch.Text = string.Empty; 
     CanSearch = true; 
    } 

    private void OnFilterCommand() 
    { 
     try 
     { 
      if(!IsBusy && CanSearch) 
      { 
       AppMessages.FilterAssetMessage.Send(txtSearch.Text); 
      } 
     } 
     catch(Exception ex) 
     { 
      // Notify user if there is any error 
      AppMessages.RaiseErrorMessage.Send(ex); 
     } 
    } 

    private void txtSearch_KeyUp(object sender, System.Windows.Input.KeyEventArgs e) 
    { 
     OnFilterCommand(); 
    } 
+0

ビジー状態の意味は何ですか?あなたは虚偽を設定するだけで、後は使用しません。 – Custodio

+0

真実..私はこれを引っ張ったコードが、何か他のことをしているときにBusyフラグを使用していて、ちょっとフィルタリングをしたくないと思う。あなた自身のものからそれを削除することを自由に感じてください。 –

0

は、拡張されたWPF ToolkitでWatermarkTextBoxを見てみましょうそのコントロールをSilverlightに移植しようとする可能性があります。

関連する問題