深入浅出WPF 第二部分(22)

10.2 且“静”且“动”用资源

静态资源使用(StaticResource)指的是在程序载入内存时对资源的一次性使用,之后就不再去访问这个资源了;动态资源使用(DynamicResource)指的是在程序运行过程中仍然会去访问资源。显然,如果你确定某些资源只在程序初始化的时候使用一次、之后不会改变,就应该使用StaticResource,而程序运行过程中还有可能改变的资源应该以DynamicResource形式使用。

    <Window.Resources>
        <ResourceDictionary>
            <sys:String x:Key="str">大话西游</sys:String>
        </ResourceDictionary>
    </Window.Resources>
    <StackPanel Orientation="Vertical">
        <TextBlock Text="{DynamicResource ResourceKey=str}" Margin="5"/>
        <Button Content="OK" Width="80"  Click="Button_Click"/>
    </StackPanel>

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            this.Resources["str"] = "月光宝盒";
        }

10.3 向程序添加二进制资源

我们明确地称呼资源词典里的资源为“WPF资源”或对象资源,称呼应用程序的内嵌资源为“程序集资源”或二进制资源。WPF程序中写在<Application.Resources>..</ApplicationResources>标签内的资源仍然是WPF资源而非二进制资源。

    <Grid Margin="5">
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="5"/>
            <RowDefinition Height="25"/>
        </Grid.RowDefinitions>
        <Image x:Name="img1" Grid.Row="0"/>
        <TextBlock Text="{x:Static Member=local:Resources.String1}" Grid.Row="2" HorizontalAlignment="Center"/>
    </Grid>
            var testImg = FirstWpfApplication.Resources.Image1;
            MemoryStream st = new MemoryStream();
            testImg.Save(st, System.Drawing.Imaging.ImageFormat.Png);
            ImageSourceConverter converter = new ImageSourceConverter();
            this.img1.Source = (ImageSource)converter.ConvertFrom(st);

如果想让外部文件编译进目标成为二进制资源,必须在属性窗口中把文件的Build Action属性设为Resource。

10.4 使用Pack URI路径访问二进制资源

        <Image x:Name="img1" Grid.Row="0" Source="/images/Image1.jpg"/>
[文件夹名称/]文件名称
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值