2009-02-24 68 views
1

我試圖設置System.Windows.Control.RichTextBox語言爲「ES-PE」,但我發現
一些問題,例如在某些計算機上,完美工作,啓用SpellChecker
與「ES-PE」的語言,但在其他地方,它只是與「EN-US」一起工作,所以我不知道最新情況與
控制,我在XAML和C#中使用以下代碼:WPF RichTextBox和具體的文化問題

這是代碼當用戶從GridView中選擇一行並顯示附加的截圖時

private void dlstInformes_MouseDoubleClick(object sender, MouseButtonEventArgs e) 
     { 
      if (!dlstInformes.SelectedItem.ToString().Equals("")) 
      { 
       var source_ = dlstInformes.SelectedItems; 
       InformeMedico demo = new InformeMedico(); //New Window 

       foreach (informeMedico item in source_) 
       { 
        numeroinforme = item.numeroinforme.ToString(); 
        nombreinforme = item.nombreinforme; 
        fechainforme = item.fechainforme.ToString(); 
        nombreMedico = item.medicoCompleto.ToString(); 
        turnoMedico = item.turno.ToString(); 
        nombrePaciente = item.pacienteCompleto.ToString(); 
        nombreExamen = item.nombreinforme.ToString(); 

       } 
       demo.Language = XmlLanguage.GetLanguage("es-PE"); 
       demo.txtNombreExamen.Text = nombreinforme; 
       demo.lblNroInforme.Content = numeroinforme; 
       demo.lblMedicoNombre.Content = nombreMedico; 
       demo.lblNombrePac.Content = nombrePaciente; 
       demo.lblTurnoMedico.Content = turnoMedico; 
      using (DB db = new DB()) 
      { 
       var lstTM = (from ea in db.EXAMENXATENCIONs where ea.turnomedico.Trim() != " " select ea.turnomedico).Distinct().ToList(); 
       string tm = (from ea in db.EXAMENXATENCIONs where ea.codigo == Convert.ToInt32(numeroinforme) select ea.turnomedico).FirstOrDefault(); 
       demo.cboTurnoMed.ItemsSource = lstTM; 
       demo.cboTurnoMed.SelectedItem = tm; 
       demo.cboTurnoMed.SelectedValue = tm; 
       demo.cboTurnoMed.Text = tm; 
       if (tm.Equals("RE/ES") || tm.Equals("RE/HS") || tm.Equals("RE/HT") || tm.Equals("RE/KV") || tm.Equals("HH/CS") || tm.Equals("HH/ES") || tm.Equals("HH/HS") || tm.Equals("HH/HT") || tm.Equals("HH/KV")) 
       { 
        demo.FirmaUnoDefault.Content = "DEN51"; 
        demo.FirmaDosDefault.Content = tm; 
       } 
       else if (tm.Equals("HH/AO") || tm.Equals("IU/AO") || tm.Equals("RE/AO") || tm.Equals("HH/JA") || tm.Equals("RR/JA") || tm.Equals("IU/JA")) 
       { 
        demo.FirmaUnoDefault.Content = "DEN51"; 
        demo.FirmaDosDefault.Content = "AOY20"; 
       } 
       else if (tm.Equals("IU/CS") || tm.Equals("IU/ES") || tm.Equals("IU/HT") || tm.Equals("IU/KV")) 
       { 
        demo.FirmaUnoDefault.Content = "IUU17"; 
        demo.FirmaDosDefault.Content = tm; 
       } 
       else if (tm.Equals("RD/DE")) 
       { 
        demo.FirmaUnoDefault.Content = "REE"; 
        demo.FirmaDosDefault.Content = "DEN51"; 
       } 
       else if (tm.Equals("RE/JC")) 
       { 
        demo.FirmaUnoDefault.Content = "REE"; 
        demo.FirmaDosDefault.Content = "JCCH25"; 
       } 
       else if (tm.Equals("RE/CS")) 
       { 
        demo.FirmaUnoDefault.Content = "DEN51"; 
        demo.FirmaDosDefault.Content = "REE"; 
       } 
      } 
      demo.lblCodigoClase.Visibility = Visibility.Hidden; 
      demo.lblCodigoEstudio.Visibility = Visibility.Hidden; 
      demo.lblCodigoPaciente.Visibility = Visibility.Hidden; 
      demo.FirmaUnoDefault.Visibility = Visibility.Hidden; 
      demo.FirmaDosDefault.Visibility = Visibility.Hidden; 
      demo.rtbHallazgo.Language = XmlLanguage.GetLanguage("es-PE"); 
      demo.rtbConclusion.Language = XmlLanguage.GetLanguage("es-PE"); 
      demo.rtbTecnica.Language = XmlLanguage.GetLanguage("es-PE"); 

      demo.rtbHallazgo.SpellCheck.IsEnabled = true; 
      demo.rtbTecnica.SpellCheck.IsEnabled = true; 
      demo.rtbConclusion.SpellCheck.IsEnabled = true; 
      demo.rtbConclusion.SpellCheck.SpellingReform = SpellingReform.PreAndPostreform; 

      demo.ResizeMode = ResizeMode.NoResize; 

      demo.Closing += new System.ComponentModel.CancelEventHandler(notClosing_CancelEventArgs); 

      demo.ShowDialog(); 
     } 
     else 
     { 
      MessageBox.Show("Seleccione un item", "Error", MessageBoxButton.OK, MessageBoxImage.Asterisk); 
     } 
    } 

alt text http://i27.tinypic.com/358rznl.jpg

我也嘗試配置並從SO中刪除「en-US」語言,當它發生拼寫檢查完全停止並且當我爲該鍵盤重新添加該語言時,它會再次出現SpellChecker。

劇照不是以「ES-PE」或只是西班牙工作作爲家長

先謝謝了!

回答

1

我不確定這是否有用,但可能值得一試。

在Application.StartUp事件中添加以下代碼

FrameworkElement.LanguageProperty.OverrideMetadata(
      typeof(FrameworkElement), 
      new FrameworkPropertyMetadata(
       XmlLanguage.GetLanguage(
       CultureInfo.CurrentCulture.IetfLanguageTag))); 

或者你可以修改它來指定ES-PE,而不是當前的文化。

此信息可能提供更深入的細節:Getting a WPF application to pick up the correct regional settings

+1

感謝您的答覆,但我發現這不是一個代碼問題,它只有在.Net框架安裝在機器上註冊的默認語言工程(爲例如es-PE),因此在默認目錄中創建一個新文件夾,並且它可以工作 – 2009-09-09 14:33:36