如何在代码中设置以下内容?
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
我正在使用App.xaml中合并的主题。它适用于所有控件,但是当我为某些东西定义样式时,例如TextBox
,主题样式不会被提取,除非我使用上面的BasedOn
,而是获得默认的TextBox
样式。
现在我在代码中创建DataGridTextColumn
,我无法让BasedOn
部分适用于EditingElementStyle
Style editingStyle = new Style(typeof(TextBox));
editingStyle.BasedOn = ...?;
有什么建议吗?另外,有没有办法获得主题样式而不是使用默认样式而不使用BasedOn?
由于
答案 0 :(得分:24)
试试这个:
editingStyle.BasedOn = (Style) FindResource(typeof (TextBox))
我不知道如何在不指定BasedOn
的情况下应用主题样式。如果有这样的方式,我也想知道...
答案 1 :(得分:3)
这应该有效:
Style baseStyle = new Style(typeof(TextBox));
Style editingStyle = new Style(typeof(TextBox));
editingStyle.BasedOn = baseStyle;
您也可以在构造函数中执行此操作:
Style editingStyle = new Style(typeof(TextBox), baseStyle);
答案 2 :(得分:0)
我喜欢answer of Pavlo Glazkov,但它没有编译。
FindResource是(non-static) member of FrameworkElement。 需要识别搜索请求的上下文。
所以我推荐这个:
style.BasedOn = (Style)frameworkElement.FindResource(typeof(TextBox));