Wpf 如何在运行时确定应用于对象的样式是否为默认样式?
如果当前样式是默认样式,我希望能够在运行时将样式应用于对象。我不想覆盖任何用户定义的样式。有人知道怎么做吗?检查DefaultStyleKeyProperty,它是任何自定义控件的静态属性Wpf 如何在运行时确定应用于对象的样式是否为默认样式?,wpf,styles,Wpf,Styles,如果当前样式是默认样式,我希望能够在运行时将样式应用于对象。我不想覆盖任何用户定义的样式。有人知道怎么做吗?检查DefaultStyleKeyProperty,它是任何自定义控件的静态属性 string styleKeyName = DefaultStyleKeyProperty.Name; 通常,如果没有与控件关联的样式,则名称将为“DefaultStyleKey”您可以这样做: DependencyPropertyHelper.GetValueSource( someControl
string styleKeyName = DefaultStyleKeyProperty.Name;
通常,如果没有与控件关联的样式,则名称将为“DefaultStyleKey”您可以这样做:
DependencyPropertyHelper.GetValueSource(
someControl, FrameworkElement.StyleProperty).BaseValueSource
== BaseValueSource.Default;
您可以将其封装在扩展方法中,如下所示:
static public bool HasDefaultStyle(this FrameworkElement item)
{
return DependencyPropertyHelper.GetValueSource(
item, FrameworkElement.StyleProperty).BaseValueSource
== BaseValueSource.Default;
}
然后您可以调用someControl.HasDefaultStyle()
另外,请看一下这篇文章: