Как установить целевое свойство на ярлыке?

Следующий код:

    <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.

Что я делаю неправильно?

Ответы

Ответ 1

Свойство Target принимает сам элемент, а не строку, поэтому вы хотите:

<TextBlock Name="foo"></TextBlock>
<Label Target="{Binding ElementName=foo}">_Delta pressure</Label>

Ответ 2

Похоже, что в версии 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.