Я не знал точно, в какой вы ситуации, когда я читал ваш вопрос.Посмотрев на него снова, кажется, что вы пытаетесь выяснить, какие свойства можно установить в ваших стилях для объекта.Это будет означать, что вас заинтересуют не зависящие от чтения свойства зависимости, доступные для объекта зависимости.Конечно, есть предостережение о том, что объект может не обязательно использовать все свойства для визуализации.Поэтому не удивляйтесь, если вы установите некоторые свойства, и ничто не изменится.
Просто используйте отражение для поиска всех полей DependencyProperty
и получения значений (если объекты следуют соглашениям для объявления свойств зависимостей),Вы можете использовать это, чтобы получить такие свойства.
public static IEnumerable<DependencyProperty> GetDependencyProperties(DependencyObject owner)
{
var type = owner.GetType();
var flags = BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy;
return type.GetFields(flags)
.Where(fi => fi.FieldType == typeof(DependencyProperty))
.Select(fi => fi.GetValue(null))
.Cast<DependencyProperty>();
}
// get the non-readonly dependency properties
var writableDPs = GetDependencyProperties(myObject)
.Where(dp => !dp.ReadOnly);