2014-09-11 4 views
2

내 텍스트 상자가 작동하지 않아도됩니다. 텍스트 상자에 맞춤법 오류가 발생했습니다. 내가 true로 IsReadOnly 설정을 가지고 있지만 할 수없는 약간 짜증했다텍스트 상자 SpellCheck.IsEnabled - 계산 방법

<TextBox Text="{Binding Content}" SpellCheck.IsEnabled="True" Language="en-GB" /> 

사용하여 내 연구 방법 맞춤법 오류가 작동하도록하는 나에게 보여 주었다

는, 나는 그것으로 살아야 생각 .

내가 알 수없는 것은 텍스트 상자에 얼마나 많은 맞춤법 문제/오류가 있는지를 아는 것입니다. 내가 찾을 수있는 것은 http://msdn.microsoft.com/en-us/library/system.windows.controls.spellcheck%28v=vs.110%29.aspx입니다.하지만 나는 희망을 잃지 않고 있습니다!

은 내가

  SpellingError e = tx.GetSpellingError(0); // not null 

그리고 그 다음이 잘못 나를 알리는 어떤 제안을 제공에

  SpellingError e = tempTb.GetSpellingError(0); // always null 

에서 코드를 업데이트 (그리고 내가 할 수있는 경우

 TextBox tx = new TextBox(); 
     tx.SpellCheck.IsEnabled = true; 
     tx.Text = "saf and tre"; 

     var split = tx.Text.Split(' '); 
     var errors = 0; 
     foreach (var s in split) 
     { 
      var tempTb = new TextBox(); 
      tempTb.Text = s; 

      SpellingError e = tempTb.GetSpellingError(0); // always null 
      var a = tempTb.GetSpellingErrorLength(0); 
      var b = tempTb.GetSpellingError(0); 
      var c = tempTb.GetSpellingErrorStart(0); 

      if (tempTb.GetSpellingErrorLength(0) >= 0) 
       errors++; 
     } 

을 추가하려고 카운트를 수행하십시오).

내가

 TextBox tx = new TextBox(); 
     tx.SpellCheck.IsEnabled = true; 
     tx.Text = "saf many tre further more i sense taht nothing is what is"; 

     var split = tx.Text.Split(' '); 
     var errors = 0; 
     var start = 0; 
     foreach (var s in split) 
     { 
      var tempTb = new TextBox(); 
      tempTb.Text = s;     

      SpellingError f = tx.GetSpellingError(start); 

      start += s.Length + 1; 

      if (f!=null) 
       errors++; 
     } 

이 왜 tempTb 작동하지 않습니다 할 필요있어 문제를 해결 얻으려면? 내가

을 게시 한 후

+2

재미있는 점 : 'tempTb'에'SpellCheck.IsEnabled'을 설정하지 않았기 때문일 수 있습니까? – EdSF

답변

2

그것은 @EdSF가 정확하고 SpellCheck.IsEnabled 임시 TextBox 설정해야합니다 내 디버깅에서 나타납니다

GetSpellingErrorStart() 
GetSpellingError() 
GetSpellingErrorLength() 
SpellingError e = tempTb.GetSpellingError(0); 

이 그것을 발견

티를 재현하는 데 사용되는 코드 s :

void initTest() 
{ 
    TextBox tx = new TextBox(); 
    tx.SpellCheck.IsEnabled = true; 
    tx.Text = "saf and tre"; 

    var split = tx.Text.Split(' '); 
    var errors = 0; 
    foreach (var s in split) 
    { 
     var tempTb = new TextBox(); 
     tempTb.SpellCheck.IsEnabled = true; // Added this line 
     tempTb.Text = s; 

     SpellingError e = tempTb.GetSpellingError(0); // no longer always null 
     var a = tempTb.GetSpellingErrorLength(0); 
     var b = tempTb.GetSpellingError(0); 
     var c = tempTb.GetSpellingErrorStart(0); 

     //if (tempTb.GetSpellingErrorLength(0) >= 0) //doesn't appear to be correct 
     if (e != null) 
     { 
      errors++; 
     } 
    } 
} 
+0

내가 필요한 것. SpellCheck 클래스가 얼마나 많은 오류가 있는지 알려주지 않아야합니까? 나는 사람들에게 그렇게하는 것이 더 유용 할 것이라고 생각합니다 ... – NielW

0

나는 EG

 TextBox tx = new TextBox(); 
     tx.SpellCheck.IsEnabled = true; 
     tx.Text = "saf"; 
     var reslt = tx.GetSpellingErrorStart(0);