c# - 是否有可能知道 wpf 中的样式中有哪些 setter 可用?

标签 c# wpf

我下载了一个包含类的程序集。该类公开了一个样式属性以允许自定义外观。是否有可能知道它允许创建样式对象的所有可能的 setter 属性是什么? (例如,通过查看 disaassmbly 等)

编辑:如果不可能,我也在寻找指南(例如,找到类公开的所有依赖属性,查看 PutStyle 的 MSIL 代码等)

最佳答案

当我看到你的问题时,我并不知道你的具体情况。再次查看后,听起来您正在尝试查找可以在对象的样式中设置哪些属性。这意味着您会对依赖对象上可用的非只读依赖属性感兴趣。当然,需要注意的是对象可能不一定使用所有属性来呈现自身。因此,如果您设置了一些属性并且似乎没有任何改变,请不要感到惊讶。

只需使用反射来搜索所有 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);

关于c# - 是否有可能知道 wpf 中的样式中有哪些 setter 可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5615434/

相关文章:

WPF ContextMenu Dictionary<Key, List<Value>> 数据绑定(bind)

XAML 中的 WPF 日期字符串格式

c# - 如何使用 LINQ to XML 将新元素添加到 Windows Phone 7 上的现有 XML 文件?

c# - 提高在 wpf 中绘制平铺位图的性能

c# - WPF 获取 UI 线程,或如何从非 UI 线程显示窗口

c# - MonoGame 和 Microsoft.XNA.Framework 命名空间之间的引用不明确

c# - 在 WPF 中渲染 UIElement 期间等待屏幕

c# - 从 Azure 下载文件的 Web 服务会引发大文件异常

c# - Xamarin.Forms.UWP - 错误 PRI175

c# - 字典、列表还是数组?