BasedOn="{StaticResource {x:Type TextBox}}" in Code Behind for Style
Solution 1
Try this:
editingStyle.BasedOn = (Style) FindResource(typeof (TextBox))
And I don't know any way how you can make it apply the Theme style without specifying BasedOn
. If there is such a way, I would like to know it too...
Solution 2
This should work:
Style baseStyle = new Style(typeof(TextBox));
Style editingStyle = new Style(typeof(TextBox));
editingStyle.BasedOn = baseStyle;
You can also do it in the constructor:
Style editingStyle = new Style(typeof(TextBox), baseStyle);
Solution 3
I like the answer of Pavlo Glazkov, but it does not compile.
FindResource is (non-static) member of FrameworkElement. It is required to identify the context of the search request.
So I recommend this:
style.BasedOn = (Style)frameworkElement.FindResource(typeof(TextBox));
Fredrik Hedblad
http://meleak.wordpress.com. If you have any questions you can reach me at [email protected]
Updated on June 19, 2022Comments
-
Fredrik Hedblad almost 2 years
How can you set the following in code behind?
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
I'm using a Theme merged in App.xaml. It works great for all Controls but when I define a Style for something, e.g.
TextBox
, the Theme Style doesn't get picked up unless I useBasedOn
like above, instead it gets the defaultTextBox
Style.Now I'm creating a
DataGridTextColumn
in code behind and I can't get theBasedOn
part to work for theEditingElementStyle
Style editingStyle = new Style(typeof(TextBox)); editingStyle.BasedOn = ...?;
Any suggestions? Also, is there any way to get the Theme Style instead of the default Style applied without using BasedOn?
Thanks
-
Fredrik Hedblad about 13 yearsThanks for your answer! Yes, I hoped that would work to but the Theme Style isn't picked up for some reason. If I do it in Xaml it works..