Anton Samarin
Top achievements
Rank 1
Anton Samarin
asked on 10 Sep 2008, 01:58 PM
How set theme into source code?
this.SetValue(Telerik.Windows.Controls.Theming.ThemeProperty,
new SummerTheme());
this is not work.....
I have class, which succeed to RadGridView.
public class MyGridView : RadGridView
{
protected override void OnInitialized(EventArgs e)
{
base.OnInitialized(e);
CaramelTheme st = new CaramelTheme();
this.SetValue(Telerik.Windows.Controls.Theming.ThemeProperty, st);
}
}
Thanks.
this.SetValue(Telerik.Windows.Controls.Theming.ThemeProperty,
new SummerTheme());
this is not work.....
I have class, which succeed to RadGridView.
public class MyGridView : RadGridView
{
protected override void OnInitialized(EventArgs e)
{
base.OnInitialized(e);
CaramelTheme st = new CaramelTheme();
this.SetValue(Telerik.Windows.Controls.Theming.ThemeProperty, st);
}
}
Thanks.
7 Answers, 1 is accepted
0
Hello Anton,
Thank you for pointing out this issue, fixing this bug is in our to do list for the comming versions of the RadGridView control, your Telerik points have been updated.
Inheriting our RadGridView is not a common scenario and we are wonering if you miss some features requiring inheritance.
I found a workaround for your scenario, all you need to do is to make a static constructor and override DefaultStyleKeyProperty metadata of MyGridView. Here is the code:
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.
Thank you for pointing out this issue, fixing this bug is in our to do list for the comming versions of the RadGridView control, your Telerik points have been updated.
Inheriting our RadGridView is not a common scenario and we are wonering if you miss some features requiring inheritance.
I found a workaround for your scenario, all you need to do is to make a static constructor and override DefaultStyleKeyProperty metadata of MyGridView. Here is the code:
static MyGridView() |
{ |
DefaultStyleKeyProperty.OverrideMetadata(typeof(MyGridView), |
new FrameworkPropertyMetadata(new ThemeResourceKey(typeof(CaramelTheme), |
typeof(RadGridView)))); |
} |
protected override void OnInitialized(EventArgs e) |
{ |
base.OnInitialized(e); |
CaramelTheme st = new CaramelTheme(); |
this.SetValue(Theming.ThemeProperty, st); |
this.InitializeData(); |
} |
private void InitializeData() |
{ |
List<Customer> customers = new List<Customer>() |
{ new Customer("James", 30) , |
new Customer("Richard", 28)}; |
this.ItemsSource = customers; |
} |
I send you a simple project which I hope solves your problems with this issue.
Best wishes,
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.
0
Anton Khramov
Top achievements
Rank 1
answered on 11 Sep 2008, 08:56 AM
Thank you, Atanas.
Your workaround works for Caramel theme, but it doesn't work for SimpleTheme. The following exception was thrown:
{"Cannot create instance of 'MyGridView' defined in assembly 'RunTimeThemeChange, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Exception has been thrown by the target of an invocation. Error at object 'System.Windows.Controls.Grid' in markup file 'RunTimeThemeChange;component/window1.xaml' Line 8 Position 4."}
Can you provide workaround for this case?
Best regards,
Anton
Your workaround works for Caramel theme, but it doesn't work for SimpleTheme. The following exception was thrown:
{"Cannot create instance of 'MyGridView' defined in assembly 'RunTimeThemeChange, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Exception has been thrown by the target of an invocation. Error at object 'System.Windows.Controls.Grid' in markup file 'RunTimeThemeChange;component/window1.xaml' Line 8 Position 4."}
Can you provide workaround for this case?
Best regards,
Anton
0
Hello Anton,
Our SimpleTheme is in a different assembly(Telerik.Windows.Controls.Simple), so you need to add a reference.
I did not succeed in reproducing you exception, it will be helpful to send more details.
I am attaching a modified copy of the project you already have and want to assure you the workaround works for all our themes. It is completely neccessary to modify the static constructor of the MyGridView control too:
All the best,
Atanas
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.
Our SimpleTheme is in a different assembly(Telerik.Windows.Controls.Simple), so you need to add a reference.
I did not succeed in reproducing you exception, it will be helpful to send more details.
I am attaching a modified copy of the project you already have and want to assure you the workaround works for all our themes. It is completely neccessary to modify the static constructor of the MyGridView control too:
static MyGridView() |
{ |
DefaultStyleKeyProperty.OverrideMetadata(typeof(MyGridView), |
new FrameworkPropertyMetadata(new ThemeResourceKey(typeof(SimpleTheme), |
typeof(RadGridView)))); |
} |
All the best,
Atanas
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.
0
Anton Khramov
Top achievements
Rank 1
answered on 11 Sep 2008, 11:21 AM
Hi, Atanas.
Thanks for replay.
Reference to Assembly (Telerik.Windows.Controls.Simple) was added, but the error occured. After I added all Teleriks assemblies it started working. I don't know what reference exactly was needed.
Regards, Anton.
Thanks for replay.
Reference to Assembly (Telerik.Windows.Controls.Simple) was added, but the error occured. After I added all Teleriks assemblies it started working. I don't know what reference exactly was needed.
Regards, Anton.
0
Hello Anton Khramov,
To use our RadGridView you need references to the following assemblies: Telerik.Windows.Controls, Telerik.Windows.Controls.GridView, Telerik.Windows.Controls.Input, Telerik.Windows.Data.
In your case you also need a reference to Telerik.Windows.Controls.Simple.
The need of Telerik.Windows.Controls.Input assembly is not quite obvious, and I bet you missed that reference.
Best wishes,
Atanas
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.
To use our RadGridView you need references to the following assemblies: Telerik.Windows.Controls, Telerik.Windows.Controls.GridView, Telerik.Windows.Controls.Input, Telerik.Windows.Data.
In your case you also need a reference to Telerik.Windows.Controls.Simple.
The need of Telerik.Windows.Controls.Input assembly is not quite obvious, and I bet you missed that reference.
Best wishes,
Atanas
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.
0
Anton Khramov
Top achievements
Rank 1
answered on 12 Sep 2008, 10:23 AM
Hi, Atanas.
Thank you.
Do you have theming for other controls? For examle RadTabControl?
Regard, Anton.
Thank you.
Do you have theming for other controls? For examle RadTabControl?
Regard, Anton.
0
Hi Anton,
Currently there are multiple themes only for the GridView and the Carousel. The other controls are not yet part of the common theming mechanism and have only one theme.
By the end of the week we will be able to send you updated assemblies with which you will be able to set the Theming.Theme property for the other controls as well but unfortunately the themes themselves will not be ready before the Q3 release.
Would you like to create custom themes for the controls?
Sincerely yours,
Miroslav
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.
Currently there are multiple themes only for the GridView and the Carousel. The other controls are not yet part of the common theming mechanism and have only one theme.
By the end of the week we will be able to send you updated assemblies with which you will be able to set the Theming.Theme property for the other controls as well but unfortunately the themes themselves will not be ready before the Q3 release.
Would you like to create custom themes for the controls?
Sincerely yours,
Miroslav
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.