仅当当前样式是默认样式时,我才希望能够在运行时将样式应用于对象。我不想覆盖任何用户定义的样式。有人知道怎么做吗?
Micah
问问题
385 次
2 回答
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()
。
另外,看看这篇文章: WPF中的默认模板
于 2008-12-03T22:16:17.483 回答
-1
检查 DefaultStyleKeyProperty,它是任何自定义控件的静态属性。
string styleKeyName = DefaultStyleKeyProperty.Name;
通常如果没有与控件关联的样式,则名称将为“DefaultStyleKey”
于 2008-12-03T22:01:29.400 回答