在样式的代码背后的BasedOn =“{StaticResource {x:Type TextBox}}”

如何在代码中设置以下内容?

 

我正在使用App.xaml中合并的主题。 它适用于所有控件,但是当我为某些东西定义样式时,例如TextBox ,除非我像上面一样使用BasedOn ,否则主题样式不会被拾取,而是获得默认的TextBox样式。

现在我在代码后面创建一个DataGridTextColumn ,我无法让BasedOn部分用于EditingElementStyle

 Style editingStyle = new Style(typeof(TextBox)); editingStyle.BasedOn = ...?; 

有什么建议? 此外,有没有办法获得主题样式而不是使用默认样式而不使用BasedOn?

谢谢

试试这个:

 editingStyle.BasedOn = (Style) FindResource(typeof (TextBox)) 

而且我不知道如何在不指定BasedOn情况下应用主题样式。 如果有这样的方式,我也想知道它…

这应该工作:

 Style baseStyle = new Style(typeof(TextBox)); Style editingStyle = new Style(typeof(TextBox)); editingStyle.BasedOn = baseStyle; 

您也可以在构造函数中执行此操作:

 Style editingStyle = new Style(typeof(TextBox), baseStyle); 

我喜欢Pavlo Glazkov的答案 ,但它没有编译。

FindResource是FrameworkElement的(非静态)成员 。 需要识别搜索请求的上下文。

所以我推荐这个:

 style.BasedOn = (Style)frameworkElement.FindResource(typeof(TextBox)); 
Interesting Posts