如何在Silverlight中访问数据绑定属性上的属性?

如何在Silverlight中访问数据绑定属性上的属性?,silverlight,data-binding,Silverlight,Data Binding,例如,我有一个绑定到属性的简单文本框: <TextBox Text="{Binding FirstName, Mode=TwoWay, ValidatesOnExceptions=True, NotifyOnValidationError=True}" /> 因此,给定textbox,我想从属性中获取displayname属性。这将用于包含fieldlabel和其他一些细节的复合控件中 提前感谢。我现在无法尝试,因此这可能不准确,甚至不可能。一旦我到了一台我可以尝试的电脑,我会…

例如,我有一个绑定到属性的简单文本框:

<TextBox Text="{Binding  FirstName, Mode=TwoWay, ValidatesOnExceptions=True, NotifyOnValidationError=True}" />
因此,给定textbox,我想从属性中获取displayname属性。这将用于包含fieldlabel和其他一些细节的复合控件中


提前感谢。

我现在无法尝试,因此这可能不准确,甚至不可能。一旦我到了一台我可以尝试的电脑,我会……在那之前,这只是理论。

我猜在复合控件中,每个数据绑定字段都会有如下内容:

<TextBlock Text="{Binding FirstName, Mode=OneWay}" />
<TextBox Text="{Binding FirstName, Mode=TwoWay, ...}" />
在这里,我传入了
Display
作为参数,以防您想要访问其他属性

同样,这只是理论,因为我目前无法测试这一点,并且无法回忆
IValueConverter.Convert(object value,…)
是否传递了有问题的对象,或者在本例中仅传递了字符串值。如果它只是字符串值,则可能是不可能的,但如果它是对象,则取决于您对反射名称空间的访问量,以计算属性

一旦我有能力,我将把这个场景放在一起,并尝试一下

编辑:

由于某种原因,当我尝试在这个编辑中粘贴代码时,sytax highlighter给了我手指

不管怎样,在一个小项目中尝试了这个之后,它认为你做不到

根据我的建议,制作2个数据绑定控件,并对使用该属性的控件使用转换器,我执行了以下操作:

  • 为数据绑定控件创建了xaml
  • 创建用于测试的自定义属性
  • 使用修饰属性创建模型以进行测试
  • 创建转换器以尝试从属性读取属性
  • 这就是我被抓住的地方。我无法从IValueConverter.Convert(…)方法获取数据绑定类型。value参数与targetType参数一样以字符串形式传递。虽然这是主要的问题,但第二个问题是我无法动态识别控件绑定到的属性名。这可能通过转换器参数进行修正

    现在,如果我为测试模型的类型提供了修饰属性,那么我就能够读取属性值,这样就有很多可能了,但我无法动态地识别该类型

    我能想到的唯一其他方法是在数据真正绑定到自定义控件之前创建某种形式的观察者或转换器

    祝你好运

    <TextBlock Text="{Binding FirstName, Mode=OneWay}" />
    <TextBox Text="{Binding FirstName, Mode=TwoWay, ...}" />
    
    <TextBlock Text="{Binding FirstName, Mode=OneWay, Converter={StaticResource AttributeConverter}, ConverterParameter=Display}" />
    <TextBox Text="{Binding FirstName, Mode=TwoWay, ...}" />