2010-08-25 3 views
15

Следующий код:Как установить свойство target на метке?

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

Формирует следующую ошибку во время проектирования:

Error 1 'Foo' Значение не может быть присвоено свойству 'Target'. Свойство 'Target' типа 'UIElement' не может быть указано как строка. C: \ Программирование \ WpfCustomPlot \ SPT.Olga.Plot.Custom \ PumpCurves \ View \ RatedValuesView.xaml 65 45 SPT.Olga.Plot.Custom

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

типа '' UIElement делает не имеют общедоступного класса TypeConverter. Ошибка на линии 65 Позиция 45.

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

ответ

29

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

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

Оказывается, что в версии 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.

+0

Кажется, что работает, но дает предупреждение в редакторе XAML –

+0

@ RomanoZumbé Какой редактор XAML вы используете? – CptRobby

+0

Visual Studio 2017 –

Смежные вопросы