2017-04-11 14 views
1

私はUIに複数のテキストボックスがあるUWPプロジェクトに取り組んでいます。x:Nameプロパティが添付されています。私はすべてTextboxesを単一のKeyButton_Down()イベントにバインドしました。私はのInputScopeプロパティをNumberと設定して実装したいと思います。すべてのテキストボックスのXAMLにはInputScope="Number"が設定されています。コードの背後には、特定のTextboxのInputScopeプロパティにアクセスすることができません。 は、ここで私は(それはあなたがアクセス権を持っていると、特定のTextBoxを指して)直接送信者を使用することになり、私のコード複数のテキストボックスにアクセスするコード内の単一のイベントでInputScopeプロパティ

private void TextBox_KeyDown(object sender, KeyRoutedEventArgs e) 
     { 
      TextBox tb = (TextBox)sender; 

      InputScope scope = new InputScope(); 
      InputScopeName name = new InputScopeName(); 
      name.NameValue = InputScopeNameValue.Number; 
      scope.Names.Add(name); 
      string textBoxName = tb.Name; 
      // TextBox text = new TextBox(); 

      //this line is not working for me 
      // textBoxName.InputScope = scope; 
      var state = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Shift); 
      var newState = (state & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down; 


      if ((!char.IsControl(Convert.ToChar(e.Key)) && !char.IsDigit(Convert.ToChar(e.Key)) && (Convert.ToChar(e.Key) != '.') && !newState)) 
      { 
       e.Handled = true; 
      } 

     } 
+0

... TextBoxキャスト送信元のオブジェクトにありますか? – Laith

+0

@Laith(送信者)のテキストボックス名を使用したいと思います。tb.Name.Visibilityはありません。 – Apoorv

+0

@Apoorv:いくつかのプロパティにアクセスしたい場合は、その名前は必要ありません。 tbはあなたの 'TextBox'キャストされた特定のオブジェクトです。プロパティを直接 'tb.Visibility'として使うことができます。私の答えに掲載されているように... – WPFGermany

答えて

0

です。

tb.InputScope = new InputScope(); 
tb.InputScope.Names.Clear(); 
tb.InputScope.Names.Add(new InputScopeNameConverter().ConvertFrom(InputScopeNameValue.Number.ToString())); 

あなたtbは、それが例外をスローしてい

+0

これは完璧です!私はちょうど混乱した。ご協力いただきありがとうございます – Apoorv

関連する問題