2013年07月07日

WPFサンプル:リソースファイルを扱う

   このエントリーをはてなブックマークに追加 Clip to Evernote
WPFアプリケーションで利用するデータファイルには、次の3種類があります。

1. リソースファイル
2. コンテンツファイル
3. 起点サイトファイル

今日は、リソースファイルについてのサンプルを示します。

ここでの "リソースファイル" は、Resourcesプロパティで設定するリソースとは別ものです。
リソースファイルは、ビルド時に実行可能なアセンブリまたは、ライブラリアセンブリに組み込まれるデータフィルです。リソースファイルは、アセンブリに組み込まれますので、そのデータを変更する必要のない読み込み専用のファイルで利用します。また、アセンブリに組み込まれるますので、配布の複雑さを軽減することができます。

リソースファイルの構成データファイルをリソースファイルとして設定するには、組み込みたいファイルをプロジェクトに追加し、プロジェクトの[ビルド アクション]をResourceに設定します。

ResourceFile2

この状態で、プロジェクトをビルドすると、リソースがアセンブリに追加されます。

プログラムで、リソースファイルを読み込むには、ApplicationクラスのGetResourceStreamメソッドを利用します。プロジェクトに[data]フォルダを作成し、そこに Sample.txtを追加した場合の例を示します。

まずは、C#のコードです。

using System;
using System.IO;
using System.Windows;
using System.Windows.Resources;
namespace ResourceFileSample {
    public partial class MainWindow : Window {
        public MainWindow() {
            InitializeComponent();
        }
        private void button1_Click(object sender, RoutedEventArgs e) {
            Uri fileUri = new Uri("/data/Sample.txt", UriKind.Relative);
            StreamResourceInfo info = Application.GetResourceStream(fileUri);
            StreamReader sr = new StreamReader(info.Stream);
            textBlock1.Text = sr.ReadToEnd();
        }
    }
}

このコードでは、Sample.txtをStreamReader.ReadToEndで一気に読み込み、結果をtextBlock.Textに設定しています。

最後に、実行時のスクリーンショットとXAMLです。

ResourceFile


<Window x:Class="ResourceFileSample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Button Content="Get" Height="23" HorizontalAlignment="Left" Margin="12,8,0,0"
                Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
        <ScrollViewer Margin="10,40,10,10" >
            <TextBlock Name="textBlock1" Text="TextBlock" HorizontalAlignment="Stretch"
                       TextWrapping="Wrap" VerticalAlignment="Stretch" FontFamily="MS Mincho"
                       FontSize="12" LineHeight="16" LineStackingStrategy="BlockLineHeight" />
        </ScrollViewer>
    </Grid>
</Window>


WPFサンプル・目次


 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/52327554