如果当前样式是默认样式,我希望能够在运行时将样式应用于对象 ONLY 。我不想覆盖任何用户定义的样式。有谁知道怎么做?
答案 0 :(得分:3)
看来你可以这样做:
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()
。
另外,请看一下这篇文章:Default Templates in WPF
答案 1 :(得分:-1)
检查DefaultStyleKeyProperty,它是任何自定义控件的静态属性。
string styleKeyName = DefaultStyleKeyProperty.Name;
通常,如果没有与控件关联的样式,则Name将为“DefaultStyleKey”