在样式的代码背后的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));