2017-04-11 7 views
0

私たちのアプリケーションは多言語をサポートしていますが、放射性物質に問題があります。Telerik RibbonBarローカライゼーション

問題はribbonbarが子供を持っていないです私たちは、言語を変更するには、このコードを使用して、それはリボン

Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(langCode); 
     SuspendLayout(); 
     ComponentResourceManager manager = new ComponentResourceManager(this.GetType()); 
     manager.ApplyResources(this, "$this"); 
     ApplyResources(manager, this.Controls); 
     ResumeLayout(); 



private void ApplyResources(ComponentResourceManager manager,Control.ControlCollection ctls) 
     { 

      //all controls 
      foreach (Control ctl in ctls) 
      { 
       manager.ApplyResources(ctl, ctl.Name); 
       Trace.WriteLine("Control: " + ctl.GetType().ToString()); 
       ApplyResources(manager, ctl.Controls); 
      } 
     } 

除いて動作します。タブはCommandTabsコレクションにあり、アイテムはwindows.controlsによって派生しません。

どうすればよいですか?

答えて

0

私は、その少し汚いやり方で問題を解決しますが、それは私のために

private void ApplyResources(ComponentResourceManager manager, object controls) 
    { 
     if (controls is Control.ControlCollection) 
     { 
      var ctls = (Control.ControlCollection)controls; 
      //all controls 
      foreach (Control ctl in ctls) 
      { 

       if (ctl is RadRibbonBar) 
       { 
        var tabs = ((RadRibbonBar)ctl).CommandTabs; 
        foreach (RibbonTab tab in tabs) 
        { 
         manager.ApplyResources(tab, tab.Name); 
         ApplyResources(manager, tab.Items); 
        } 

       } 
       else 
       { 
        manager.ApplyResources(ctl, ctl.Name); 
        ApplyResources(manager, ctl.Controls); 
       } 
      } 
     } 
     else // if (controls is RadItemOwnerCollection) 
     { 
      var elementCollection = controls as RadItemOwnerCollection; 


      foreach (var elem in elementCollection) 
      { 
       if (elem is RadRibbonBarGroup) 
       { 
        var barGroup = elem as RadRibbonBarGroup; 
        manager.ApplyResources(barGroup, barGroup.Name); 
        ApplyResources(manager, barGroup.Items); 
       } 
       else if (elem is RadRibbonBarButtonGroup) 
       { 
        var btnGroup = elem as RadRibbonBarButtonGroup; 
        manager.ApplyResources(btnGroup, btnGroup.Name); 
        ApplyResources(manager, btnGroup.Items); 
       } 
       else 
       { 
        manager.ApplyResources(elem, elem.Name); 

       } 
      } 
     } 


    } 
の作品
関連する問題