1. ホーム
  2. .net

[解決済み】XAMLにSystem.Stringを埋め込む

2022-02-15 16:06:59

質問

XAMLに文字列を埋め込んで、それにIDを与え、後でそれを参照する方法はありますか。

試してみました。

    <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' タイプのコレクションに 'String' タイプのインスタンスを追加できません。タイプ 'UIElement' のアイテムのみが許可されます。

String を XAML 内の他の場所にネストした場合、あるいは UI 以外の要素にネストした場合、このようなことは可能でしょうか? その場合、Name属性を与えるだけでよいのでしょうか?

解決方法は?

を使用する必要があります。 Window.Resources

以下は、Pageの例です。 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>