2010-12-08 32 views
10

¿Cómo le digo a Telerik for WinForms cuál de sus temas usar?¿Cómo cambio los temas en Telerik WinForms?

Creé un nuevo proyecto de WinForms y lancé un RadPageView en el formulario, pero hay un margen de 5 píxeles de espacio muerto en todo el contorno, las pestañas son casi dos veces más altas de lo necesario y todo es brillante y azul. Incluso aparte del espacio desperdiciado, todo este material azul se vería horriblemente fuera de lugar en nuestra aplicación. Solo quiero un aspecto estándar de Windows, y supongo que la forma de lograr eso es seleccionar un tema diferente, menos azul y menos brillante. (¿O hay otra manera?)

Aquí es lo que he intentado:

  • He intentado establecer EnableTheming en False, pero luego las pestañas no tienen fronteras en absoluto, por lo que no hay absolutamente ninguna indicación de dónde haga clic o qué pestaña está activa, nada bueno.
  • Puedo desplegar la propiedad ThemeName en el Property Grid, pero las únicas opciones son "Reset" y "ControlDefault". Ninguna configuración hace nada (incluso con EnableTheming establecido en True).
  • Hay un montón de clases de temas en Toolbox (AquaTheme, BreezeTheme, etc.), pero agregarlas a mi formulario no hace ninguna diferencia. Pensé que podrían aparecer en el menú desplegable de ThemeName, pero no es así.
  • Intenté soltar un RadThemeManager en mi formulario, pero solo tiene una colección LoadedThemes, que está vacía. Puedo agregar cosas, pero eso solo agrega un ThemeSource, y establecer uno de ellos parece implicar la búsqueda de un archivo, y no tengo ningún archivo de tema para navegar.
  • Hay una propiedad ThemeClassName en RadPageView, pero es solo una cadena (por defecto es Telerik.WinControls.UI.RadPageView) y no tengo ni idea de en qué podría cambiarlo, o cómo se relaciona con los temas.

Esto es ridículo. Todo lo que quiero es un control de pestañas que se parezca a un control de pestañas. ¿Cómo puedo hacer eso?

+0

Eche un vistazo a la ayuda en línea de Telerik para ver si eso lo lleva más lejos: http://www.telerik.com/help/winforms/overview.html – adrianbanks

+0

Gracias por el enlace, eso me llevó a http: // www.telerik.com/help/winforms/themes-using-default-themes.html que proporciona una receta para establecer un tema predeterminado. Desafortunadamente no funciona, para algunos temas (Aqua, Breeze), solo mantiene el tema azul hinchado; para otros (BreezeExtended, Desert), pasa al mismo aspecto plano sin bordes que con EnableTheming = False. –

Respuesta

13

La mejor manera de lograr esta aplicación sería usar el ThemeResolutionService. Primero tendrá que arrastrar uno de los temas de la caja de herramientas. Por ejemplo, si agrega el componente Windows7Theme a su formulario, debe aplicar el tema usando lo siguiente.

private void Form1_Load(object sender, EventArgs e) 
{ 
    ThemeResolutionService.ApplicationThemeName = "Windows7"; 
} 

recomiendo echar un vistazo a este vídeo relacionados con temas así: http://tv.telerik.com/watch/winforms/visualstylebuilder/changing-themes-at-run-time-with-radcontrols-winforms

3

Actualmente estoy trabajando en una aplicación Winform/Telerik. Es una aplicación MDI.

En primer lugar, he añadido en las referencias de mi proyecto de la DLL Telerik.Wincontrols.Themes.Breeze, a continuación, en el constructor de mi forma principal, esto es lo que hice:

private fMain() 
    { 
     InitializeComponent(); 

     ThemeResolutionService.ApplicationThemeName = "Breeze"; 
     RadGridLocalizationProvider.CurrentProvider = new FrenchRadGridLocalizationProvider(); 
    } 

También añade el French RadGridLocalizationProvider.

Y funciona, todas mis RadDataGridViews están en francés y tienen el tema Breeze.

Incluso si el formulario utilizado no es Telerik, que es mi caso, ¡no uso RadForm!

0

para que la carga de los temas dinámicos, lo hice siguiente:

private void LoadTheme() 
{ 

     var themefiles = Directory.GetFiles(System.Windows.Forms.Application.StartupPath, "Telerik.WinControls.Themes.*.dll"); 

     foreach (var theme in themefiles) 
     { 
      var themeAssembly = Assembly.LoadFile(theme); 
      var themeType = themeAssembly.GetTypes().Where(t => typeof(RadThemeComponentBase).IsAssignableFrom(t)).FirstOrDefault(); 
      if (themeType != null) 
      { 
       RadThemeComponentBase themeObject = (RadThemeComponentBase)Activator.CreateInstance(themeType); 
       if (themeObject != null) 
       { 
        themeObject.Load(); 
       } 
      } 
     } 
     var themeList = ThemeRepository.AvailableThemeNames.ToList();     
      themeDropDown.DataSource = themeList; 
} 

private void ThemeDropDown_SelectedIndexChanged(object sender, Telerik.WinControls.UI.Data.PositionChangedEventArgs e) 
{ 
      string strTheme = themeDropDown.Text; 
      Theme theme = ThemeResolutionService.GetTheme(strTheme); 
      if (theme != null) 
      { 
        ThemeResolutionService.ApplicationThemeName = theme.Name;  
      } 
} 

que fue capaz de lograr la experiencia tema cambiando completamente dinámico. En caso de que Telerik libere o actualice temas en el futuro, lo único que se requerirá será agregar los dlls del tema en la carpeta de la aplicación.