2009-11-30 18 views
11

XAMLに文字列を埋め込み、IDとIDを与えて後で参照する方法はありますか?私が試してみましたXAMLにSystem.Stringを埋め込む

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

そして、取得エラー:
はタイプ「UIElementCollection」のコレクションに型「文字列」のインスタンスを追加することはできません。 'UIElement'タイプのアイテムのみが許可されます。

XAMLの他の場所でStringをネストした場合、これを実行できますか?またはUI以外の要素の内部にありますか?次に、それにName属性を与えますか?

答えて

27

あなたはWindow.Resources

を使用する必要がありますここでは、ページのための例です、あなたのケースでは、Window.Resourcesタグになります:文字列への参照を持つ

<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

文字列がそこにある限り、それはうまくいくでしょうか? – BuddyJoe

+2

はい。 'Resources'辞書はどんな型のオブジェクトでも保持でき、' x:Key'で後で '{StaticResource} 'を使って参照することができます。 –

+0

例を見て、私の答えを更新しました... –

1

は以来、あなたが後でそれを変更することはできません文字列は不変なので、Yacoderが示唆するように、それを<Window.Resources>セクションに入れるだけです。ような何か:

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

あなたがグリッドに表示される文字列の値を変更できるようにする必要がある場合は、TextBlockのか、そのContentプロパティを設定することができ、他のコントロールを使用することをお勧めします。次を含める必要がありApplicationタグで

2

:上記のコードなし

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

、Visual Studioは、不足しているアセンブリ参照文句を言うでしょう。

+0

申し訳ありませんが、これを無視して、私はすでにそれを含んでいた参照してください。上記の投稿はURの問題を解決するはずです。 – FruityMo

+4

あなた自身の答えが役に立たなかったと思ったら、答えの下にある削除リンクを使って削除することができます。 –

関連する問題