Ответ 1
Свойство Target
принимает сам элемент, а не строку, поэтому вы хотите:
<TextBlock Name="foo"></TextBlock>
<Label Target="{Binding ElementName=foo}">_Delta pressure</Label>
Следующий код:
<TextBlock Name="foo"></TextBlock>
<Label Target="foo">_Delta pressure</Label>
Создает следующую ошибку времени проектирования:
Ошибка 1 Значение "foo" не может быть присвоено свойству "Цель". Свойство 'Target' типа 'UIElement' не может быть указано как строка. C:\Programming\WpfCustomPlot\SPT.Olga.Plot.Custom\PumpCurves\View\RatedValuesView.xaml 65 45 SPT.Olga.Plot.Custom
И следующая ошибка времени выполнения:
Тип UIElement не имеет общедоступного класса TypeConverter. Ошибка в строке 65 Позиция 45.
Что я делаю неправильно?
Свойство Target
принимает сам элемент, а не строку, поэтому вы хотите:
<TextBlock Name="foo"></TextBlock>
<Label Target="{Binding ElementName=foo}">_Delta pressure</Label>
Похоже, что в версии 4.0.NET Framework это свойство было изменено так, что оно могло бы просто взять имя элемента в виде строки. Это было выполнено путем украшения свойства 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
.