出于绑定目的,我们有一个方法,它返回传入的框架元素的最常见依赖属性。如果我们传入TextBlock
,此方法返回TextBlock.TextProperty
; RadMaskedTextBox
返回RadMaskedTextBox.MaskedTextProperty
,依此类推。
在调试时,如果 type dp.Name
,我分别得到“Text”、“MaskedText”。但是dp.Name
在代码中不可用。
我正在尝试对工具提示进行动态绑定:
var binding = new Binding("Text") //Works
{
Source = frameworkElement
};
var binding = new Binding("MaskedText") //Works
{
Source = frameworkElement
};
var binding = new Binding(dp.Name) //Doesn't work
{
Source = frameworkElement
};
我不知道如何从依赖属性中获取“Text”或“MaskedText”,也不明白为什么一开始就隐藏它。
.Net 框架 4.5 / Silverlight 5
感谢您提供的任何帮助或见解!京东
凯文,非常感谢,你非常接近。这是一个非公共领域,所以我这样做了:
{
var dpType = dp.GetType();
var nameField = dpType
.GetFields(BindingFlags.NonPublic | BindingFlags.Instance)
.Single(pi => pi.Name == "Name");
var name = nameField.GetValue(dp);
}
但是,当我调用 nameField.GetValue(dp) 时,我得到了 FieldAccessViolation。我可以在手表上看到它,但实际上无法接近它。我希望有人能解释一下,因为我不明白为什么我不能获取/使用这个值。特别是当那个(字符串“MaskedText”)是必须为路径提供的内容时。啊!!!
但是非常感谢您的帮助!京东