2009-11-30 13 views
11

¿Hay alguna forma de incrustar una cadena en XAML? Indíquelo e identifíquelo más adelante.Incruste un System.String en XAML

que he intentado:

<Window x:Class="WpfApp1.Window1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:System="clr-namespace:System;assembly=mscorlib" 
     Title="Window1" Height="300" Width="500"> 
     <Grid> 
      <System:String>Test</System:String> 
     </Grid> 
    </Window> 

Y conseguir el error:
No se puede agregar instancia de tipo 'Cadena' a una colección de tipo 'UIElementCollection'. Solo se permiten elementos de tipo 'UIElement'.

¿Podría hacer esto si ande el String en otro lugar en el XAML? o dentro de un elemento no UI? Entonces, ¿acabo de darle un atributo de Nombre?

Respuesta

27

Debe utilizar Window.Resources

He aquí un ejemplo de página, en su caso, será Window.Resources etiqueta:

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:System="clr-namespace:System;assembly=mscorlib"> 
    <Page.Resources> 
    <System:String x:Key="MyString">Hello</System:String> 
    </Page.Resources> 
    <Grid> 
    <TextBlock Text="{StaticResource MyString}"></TextBlock> 
    </Grid> 
</Page> 
+0

Y mientras la cuerda esté allí, ¿estará bien? – BuddyJoe

+2

Sí. Los diccionarios 'Resources' pueden contener objetos de cualquier tipo, y puede hacer referencia a ellos usando' {StaticResource} 'a través de su' x: Key' más tarde. –

+0

Echa un vistazo al ejemplo, actualicé mi respuesta ... –

1

Tener una referencia a la cadena no le permitirá cambiar más tarde, ya las cadenas son inmutables, por lo que, como sugiere Yacoder, simplemente colóquelo en la sección <Window.Resources>. Algo así como:

<Window.Resources> 
     <System:String x:Key="TestString">Test</System:String> 
</Window.Resources> 

Si tiene que ser capaz de cambiar el valor de la cadena que aparece en su rejilla, tendrá que utilizar un TextBlock u otro control cuyo contenido propiedad se puede establecer.

2

En la etiqueta de las aplicaciones que necesita para incluir lo siguiente:

xmlns:system="clr-namespace:System;assembly=mscorlib"> 

sin el código anterior, Visual Studio se quejan de una referencia de ensamblado que falta.

+0

Lo siento, ignora esto, veo que ya lo has incluido. las publicaciones anteriores deberían resolver su problema. – FruityMo

+4

Si cree que su propia respuesta no fue útil, puede eliminarla utilizando el enlace de eliminar debajo de la respuesta. –

Cuestiones relacionadas