2010-08-03 6 views
5

내 Windows Phone 7 App에는 한 줄짜리 텍스트 상자가 있습니다. 사용자가 {ENTER}를 누르면 텍스트 상자 값을 승인하고 텍스트 상자를 일반 비 편집 모드로 다시 전환하려고합니다.프로그래밍 방식으로 텍스트 상자 편집을 취소 할 수 있습니까?

기본적으로 프로그래밍 방식으로 텍스트 상자 편집을 취소 할 수 있습니까?

시각적 스타일을 변경하는 표준 모드로 시각 상태 관리자를 강제로 시도했지만 텍스트 상자는 여전히 편집 모드이고 화면 키보드는 계속 표시됩니다.

  VisualStateManager.GoToState(
       this.MyTextBox, 
       "Normal", 
       true); 

      VisualStateManager.GoToState(
       this.MyTextBox, 
       "Unfocused", 
       true); 

프로그래밍 방식으로 상위 컨트롤을 선택하려고 시도했지만 그 중 하나가 작동하지 않는 것 같습니다.

나는 누군가가 이것을 100 만번이나했을 것임에 틀림 없다고 생각한다.

감사합니다,

업데이트 : 나는 다른 컨트롤에 포커스를 설정하려고하지만 작동하지되었으며, SIP 키보드는 사라지지 않을 것입니다.

하지만 다른 방법으로 알아 냈습니다. 트릭은 IsReadOnly 플래그를 사용하는 것이 었습니다. 포커스가 사라지거나 엔터를 누르면 스타일을 업데이트하는 읽기 전용으로 컨트롤을 다시 설정합니다. 내가 한 일은 내 시각적 인 변화를 업데이트하여 올바르게 보였고 이제는 완벽하게 작동합니다.

private void MyTextBox_GotFocus(object sender, RoutedEventArgs e) 
    { 
     this.MyTextBox.IsReadOnly = false; 
     this.MyTextBox.SelectAll();    
    } 

    private void MyTextBox_LostFocus(object sender, RoutedEventArgs e) 
    { 
     this.MyTextBox.IsReadOnly = true; 
    } 

    private void MyTextBox_KeyUp(object sender, KeyEventArgs e) 
    { 
     if (e.Key == Key.Enter) 
     { 

      this.MyTextBox.IsReadOnly = true; 
      VisualStateManager.GoToState(
       this.MyTextBox, 
       "ReadOnly", 
       true); 
      VisualStateManager.GoToState(
       this.MyTextBox, 
       "Unfocused", 
       true); 
      VisualStateManager.GoToState(
       this.MyTextBox, 
       "Valid", 
       true); 
     } 
    } 

답변

3

두 가지 옵션 : 그것은 가치가 무엇인지에 대한

, 내 코드는 지금과 같이 보이는 (? 어쩌면 라벨)

  1. 전화 초점() 다른 관련이없는 컨트롤을
  2. TextBox를 사용 안 함으로 설정합니다 (해킹 된 것처럼 보이지만 작동 함).
+1

대신 내가 "isReadOnly의"사용 가능 -하지만 같은 생각을. 감사합니다. – will

0

이 내가 벤의 답변에 따라, 그것을 어떻게 있습니다 :

private void SearchBox_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Enter && !String.IsNullOrEmpty(SearchBox.Text)) 
    { 
    (sender as TextBox).IsEnabled = false; 
    (sender as TextBox).IsEnabled = true; 

    // Process search term here... 
    } 
} 
관련 문제