2010-06-04 75 views
2

我需要強制Silverlight提交聚焦元素(在我的情況下是TextBox,但可能是任何東西)的代碼。在WPF中我使用在Silverlight中提交聚焦元素

public static void CommitFocusedElement() { 
    UIElement element = Keyboard.FocusedElement as UIElement; 
    if (element != null) { 
     TraversalRequest request = new TraversalRequest(FocusNavigationDirection.Next); 
     FocusNavigationDirection directionBack = FocusNavigationDirection.Previous; 
     if (!element.MoveFocus(request)) {      
      request = new TraversalRequest(FocusNavigationDirection.Previous); 
      directionBack = FocusNavigationDirection.Next; 
      element.MoveFocus(request); 
     } 
     if (element.Focusable) 
     { 
      element.Focus(); 
     } 
     else 
     { 
      element.MoveFocus(new TraversalRequest(directionBack)); 
     } 
    } 
} 

但是這段代碼的幾個部分不是Silverlight兼容的。任何人都可以將我指向Silverlight替代品嗎?

回答

1

我假設你想更新一個綁定的來源。如果你不是,你可能應該。

BindingExpression expression = textBox1.GetBindingExpression(TextBox.TextProperty); 
expression.UpdateSource(); 
+0

謝謝。如果我不知道要更新的確切元素,有沒有辦法通過活動控件/窗口上的所有元素來枚舉? – Jeff 2010-06-04 12:34:03

+0

@ jeffn825:您可以使用VisualTreeHelper遍歷元素的子元素:http://msdn.microsoft.com/en-us/library/ms635657(v=VS.95).aspx,但我懷疑這是必需的。一旦用戶點擊任何地方或標籤,所有來源應該自動更新。 – 2010-06-04 13:03:32

+0

似乎沒有發生。具體來說,我有一個用戶輸入文本框,然後他們擊中輸入。這應該以編程方式使用文本框中的信息啓動新表單...但文本框似乎沒有提供該值。雖然有很多文本框,所以我不知道用戶在輸入時輸入了哪個文本框... – Jeff 2010-06-04 14:13:46