以下代码:
<TextBlock Name="foo"></TextBlock>
<Label Target="foo">_Delta pressure</Label>
生成以下设计时错误:
错误1无法将值'foo'分配给属性'Target'。属性'UIElement'的属性'Target'不能指定为字符串。 C:\ Programming \ WpfCustomPlot \ SPT.Olga.Plot.Custom \ PumpCurves \ View \ RatedValuesView.xaml 65 45 SPT.Olga.Plot.Custom
以下运行时错误:
'UIElement'类型没有公共TypeConverter类。 65号线位置错误45。
我做错了什么?
答案 0 :(得分:32)
Target
属性接受元素本身,而不是字符串,因此您需要:
<TextBlock Name="foo"></TextBlock>
<Label Target="{Binding ElementName=foo}">_Delta pressure</Label>
答案 1 :(得分:5)
似乎在.NET Framework 4.0版中,此属性已更改,因此只能将元素的名称作为字符串。这是通过使用Label.Target
使用TypeConverterAttribute
修饰NameReferenceConverter
属性来处理从String
到UIElement
的转换来完成的。
有关详细信息,请查看以下文档:
https://msdn.microsoft.com/en-us/library/system.windows.controls.label.target(v=vs.100).aspx
https://msdn.microsoft.com/en-us/library/system.windows.markup.namereferenceconverter(v=vs.100).aspx
PS:请注意,通常认为使用x:Name
属性在XAML中指定元素名称而不是Name
属性是更好的做法。