BasedOn="{StaticResource {x:Type TextBox}}"在代码隐藏风格
如何在代码后面设置以下内容?
<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 的情况下获取主题样式而不是应用默认样式?
谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我喜欢 Pavlo Glazkov 的答案,但它无法编译。
FindResource 是 (非静态)FrameworkElement 的成员。
需要识别搜索请求的上下文。
所以我推荐这个:
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:
这是此问题几年后发生的一篇文章,提供了一种从 XAML 引用主题的功能方法。
根据https://stackoverflow.com/a/24286059/5104896
首先 - 定义XAML资源字典,其中包含资源的
x:class
标识符以及x:Key
ResourceDictionary x:Class="YourNameSpaceHere.DataGridCellTemplates"
第二 - 创建一个
.cs
文件来初始化资源类。最后 - 来自您的代码的参考
Here's a post that occurred a few years after this question and provides a functional way to reference theme from XAML.
Per https://stackoverflow.com/a/24286059/5104896
First - Define the XAML resource dictionary with an
x:class
identifier along with anx:Key
of your resourceResourceDictionary x:Class="YourNameSpaceHere.DataGridCellTemplates"
Second - Create a
.cs
file that will initialize the resource class.Lastly - Reference from you code
试试这个:
我不知道如何在不指定
BasedOn
的情况下使其应用主题样式。如果有这样的方法的话我也想知道...Try this:
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...这应该可行:
您也可以在构造函数中执行此操作:
This should work:
You can also do it in the constructor: