2009-11-30 18 views
11

Gibt es eine Möglichkeit, eine Zeichenfolge in XAML einzubetten, geben Sie es und ID und verweisen Sie später darauf.Einbinden einer System.String in XAML

ich versucht habe:

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

Und erhalten Fehler:
Kann nicht Instanz vom Typ 'String' zu einer Sammlung von Typ 'UIElementCollection' hinzuzufügen. Nur Elemente vom Typ 'UIElement' sind erlaubt.

Könnte ich das tun, wenn ich den String woanders im XAML verschachtelt habe? oder in einem Nicht-UI-Element? Dann gebe ich es einfach ein Namensattribut?

Antwort

27

sollten Sie verwenden Window.Resources

Hier ist ein Beispiel für die Seite, in Ihrem Fall wird es Window.Resources Tag sein:

<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

Und solange die Saite drin ist, wird es in Ordnung sein? – BuddyJoe

+2

Ja. 'Ressourcen'-Wörterbücher können Objekte beliebigen Typs enthalten, und Sie können später mit' {StaticResource} 'über ihren' x: Key' darauf verweisen. –

+0

Werfen Sie einen Blick auf das Beispiel, ich aktualisierte meine Antwort ... –

1

Mit einem Verweis auf die Zeichenfolge Sie werden es nicht zulassen, dass zu einem späteren Zeitpunkt ändern, da Strings sind unveränderbar, so wie Yacoder es vorschlägt, setze es einfach in den Abschnitt <Window.Resources>. Etwas wie:

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

Wenn Sie in der Lage sein müssen, den Wert der Zeichenfolge zu ändern, die im Raster angezeigt wird, werden Sie wollen einen Textblock oder eine andere Steuer Content-Eigenschaft verwenden, das eingestellt werden.

2

Im Application-Tag müssen Sie Folgendes umfassen:

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

ohne den obigen Code, Visual Studio über eine fehlende Montagereferenz beschweren.

+0

Sorry, ignorier das, ich sehe du hattest es schon drin. Die obigen Beiträge sollten dein Problem lösen. – FruityMo

+4

Wenn Sie der Meinung sind, dass Ihre eigene Antwort nicht hilfreich ist, können Sie sie löschen, indem Sie den Link zum Löschen unter der Antwort verwenden. –

Verwandte Themen