1

当当前样式是默认样式时,我才希望能够在运行时将样式应用于对象。我不想覆盖任何用户定义的样式。有人知道怎么做吗?

4

2 回答 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 回答