オルタナティブ・ブログ > IT's my business >

IT業界のコメントマニアが始めるブログ。いつまで続くのか?

(XAML#04)「リソースで数値や文字列を定義する」

»

昨日に続いてリソースについてのトピックです。WPFのリソース(Resourcesプロパティ)には、通常、WPF で使う型(クラス)の値を定義しますが、ここでは数値や文字列のような .NET Framework の基本型の値を定義することもできます。ただし、デフォルトでは基本型のための名前空間は生成されていないため、自分で追加する必要があります。

以下で、Window定義における「xmlns:system="clr-namespace:System;assembly=mscorlib"」は、コアアセンブリ(mscorlib)のSystem名前空間に対応するXML中の名前空間"system"を定義しています。こうすることで、基本型の値もリソースとして指定できるようになります。

<Window ...
        xmlns:system="clr-namespace:System;assembly=mscorlib"
        Title="MainWindow" Height="325" Width="525">
    <Window.Resources>
        <system:Double x:Key="MySize">24.0</system:Double>
        <system:String x:Key="MyMessage">Hello, World!</system:String>
    </Window.Resources>
    <Grid>
        <TextBlock FontSize="{StaticResource MySize}" Text="{StaticResource MyMessage}" />
    </Grid>
</Window>

こうして定義したリソースは、Resources プロパティを使うことで、プログラムコードでも利用できます(従来のアセンブリリソースファイル(.resx)とは使い方が異なります)。

private void Button_Click(object sender, RoutedEventArgs e)
{
    var msg = this.Resources["MyMessage"] as string; // string 型として取り出す
    MessageBox.Show(msg); // ここでは取り出した結果をメッセージボックスで表示
}

Xaml4

Comment(0)