Как мне установить целевое свойство на метке? - PullRequest
17 голосов
/ 25 августа 2010

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

    <TextBlock Name="foo"></TextBlock>
    <Label Target="foo">_Delta pressure</Label>

Генерирует следующую ошибку времени разработки:

Ошибка 1 Значение 'foo' не может быть присвоено свойству 'Target'.Свойство 'Target' типа 'UIElement' нельзя указывать в виде строки.C: \ Programming \ WpfCustomPlot \ SPT.Olga.Plot.Custom \ PumpCurves \ View \ RatedValuesView.xaml 65 45 SPT.Olga.Plot.Custom

И следующая ошибка выполнения:

'Тип UIElement 'не имеет открытого класса TypeConverter.Ошибка в строке 65, позиция 45.

Что я делаю не так?

Ответы [ 2 ]

32 голосов
/ 25 августа 2010

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

<TextBlock Name="foo"></TextBlock>
<Label Target="{Binding ElementName=foo}">_Delta pressure</Label>
5 голосов
/ 07 января 2016

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...