2010-08-25 12 views
15

El siguiente código:¿Cómo configuro la propiedad de destino en una etiqueta?

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

genera el siguiente error de tiempo de diseño:

de error 1 Valor 'foo' no se puede asignar a la propiedad 'Target'. La propiedad 'Objetivo' de tipo 'UIElement' no se puede especificar como una cadena. C: \ Programación \ WpfCustomPlot \ SPT.Olga.Plot.Custom \ PumpCurves \ Ver \ RatedValuesView.xaml 65 45 SPT.Olga.Plot.Custom

Y el siguiente error en tiempo de ejecución:

tipo 'UIElement' hace no tener una clase pública TypeConverter. Error en la línea 65 Posición 45.

¿Qué estoy haciendo mal?

Respuesta

29

La propiedad Target toma el elemento en sí, no es una cadena, por lo que desea:

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

Parece ser que en la versión 4.0 de .NET Framework, esta propiedad fue cambiada de modo que sería capaz simplemente tomar el nombre del elemento como una cadena. Esto se logró decorando la propiedad Label.Target con TypeConverterAttribute usando un NameReferenceConverter para manejar la conversión de String a UIElement.

revisa el siguiente documentación para obtener más información:

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: Tenga en cuenta que en general se reconoce como una mejor práctica utilizar el atributo x:Name para especificar nombres de los elementos en XAML en vez que el atributo Name.

+0

Parece que funciona, pero da una advertencia en el editor XAML –

+0

@ RomanoZumbé ¿Qué editor XAML está utilizando? – CptRobby

+0

Visual Studio 2017 –

Cuestiones relacionadas