c# wpf如何更好的使用Application程序集资源

使用Application程序集资源是C# WPF开发中非常重要的一项技能。下面是使用Application程序集资源的完整攻略。

1. 创建资源文件

在项目中增加资源文件Resources.resx。右击项目点击“添加”->“新建项”->选择“资源文件”,并将其重命名为“Resources.resx”。添加的资源最终将会嵌入到程序集中。

2. 添加资源

在资源文件中添加需要使用的资源。可以添加图片、音频、字体、字符串等资源类型。将鼠标放在“Value”列中,该列的下拉菜单将会出现一个小三角,点击它可以选择需要添加的资源类型。

3. 在XAML中使用资源

在XAML文件中使用资源很简单,只需要使用{}括起来资源名称即可。例如:

<Button Content="{x:Static res:Resources.BtnContent}" />

其中,res是指向Resources资源文件的命名空间,Resources.BtnContent是资源文件中的资源名。

4. 在代码中使用资源

使用资源同样很简单,只需要使用Application类的Resources属性来获取资源即可。例如:

Image image = new Image();
image.Source = (BitmapImage)Application.Current.Resources["ImageName"];

其中,ImageName是资源文件中的图片资源名。

示例一:字符串资源

以下示例演示如何使用Application程序集资源来存储字符串资源,可以在窗口中动态修改这些字符串。首先,需要在Resources文件中添加字符串资源。

  1. 右键点击Resources.resx,选择“打开”。在对应的空白行输入一个新的名称,比如说“HelloWorld”(不带引号)。

  2. 再次右键点击空白行的Value列,并选择“编辑”。在编辑器窗口中,输入文本“Hello, World!”(不带引号)。

  3. 保存文件。

下面是如何在XAML中使用字符串资源的示例:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:res="clr-namespace:WpfApplication1.Properties"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Label Content="{x:Static res:Resources.HelloWorld}" FontSize="20" />
        <Button Content="Change Text" Click="Button_Click" Margin="10" />
    </Grid>
</Window>

在代码中,需要定义一个Resource引用,用于访问程序集中的资源。用下面的代码初始化它:

Resource.Initialize();

在Button_Click事件处理程序中,我们可以动态修改Resources中的字符串,如下所示:

private void Button_Click(object sender, RoutedEventArgs e)
{
    WpfApplication1.Properties.Resources.HelloWorld = "Hello, WPF!";
    label.Content = WpfApplication1.Properties.Resources.HelloWorld;
}

示例二:图片资源

以下示例演示如何在WPF应用程序中使用Application程序集资源来存储图片资源。

  1. 准备一张图片,将其复制到项目中,右击该文件并选择“属性”。

  2. 将“生成操作”更改为“Embedded Resource”。

  3. 在XAML中使用资源,使用ResourceBytesConverter实现。以下是示例代码:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns:res="clr-namespace:WpfApplication1.Properties"
        xmlns:conv="clr-namespace:WpfApplication1.Converters"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Image x:Name="image" Source="{Binding Source={x:Static res:Resources.ImageData}, Converter={StaticResource ResourceBytesConverter}}" />
    </Grid>
</Window>

图片控件使用到了资源转换器ResourceBytesConverter,代码如下:

public class ResourceBytesConverter : MarkupExtension, IValueConverter
{
    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        return this;
    }

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        MemoryStream stream = new MemoryStream(value as byte[]);
        BitmapImage image = new BitmapImage();
        image.BeginInit();
        image.StreamSource = stream;
        image.CacheOption = BitmapCacheOption.OnLoad;
        image.EndInit();
        return image;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

在代码中,图片资源可以这样获取:

byte[] imageData = WpfApplication1.Properties.Resources.ImageData;

以上就是C# WPF中如何更好的使用Application程序集资源的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c# wpf如何更好的使用Application程序集资源 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • asp.net使用DataSet的ReadXml读取XML文件及Stream流的方法

    下面是详细讲解“asp.net使用DataSet的ReadXml读取XML文件及Stream流的方法”的完整攻略。 使用DataSet的ReadXml读取XML文件 准备工作 首先,你需要创建一个XML文件并填充它。例如,下面是一个名为books.xml的简单XML文件。 <books> <book> <title>A S…

    C# 2023年5月31日
    00
  • C#如何实现dataGridView动态绑定数据

    首先,我们需要创建一个dataGridView控件,并设置其属性以便绑定数据。然后,我们可以使用C#代码动态地获取数据并将其绑定到dataGridView中。 以下是实现该过程的步骤: 步骤1:创建dataGridView控件 我们需要在窗体上创建一个dataGridView控件。可以通过拖拽方式直接从工具箱中添加或者通过代码手动添加控件。在设计时可以设置d…

    C# 2023年6月6日
    00
  • 灵活使用asp.net中的gridview控件

    使用ASP.NET中的GridView控件可以快速实现数据的呈现和管理。下面是灵活使用GridView控件的攻略: 1.绑定数据源 GridView控件的数据源可以是DataTable、DataSet、Array等多种类型的对象。以下是以DataTable作为数据源的示例: protected void Page_Load(object sender, Ev…

    C# 2023年6月3日
    00
  • .Net Core WebApi部署到Windows服务器上的步骤

    部署.NET Core WebApi到Windows服务器上的步骤如下: 在Windows服务器上安装.NET Core运行时环境。 在Windows服务器上安装IIS。 在Windows服务器上安装ASP.NET Core Module。 在Windows服务器上创建一个新的网站。 配置网站以使用ASP.NET Core Module。 将WebApi部署…

    C# 2023年5月16日
    00
  • C#实现发送手机验证码功能

    一、生成验证码 使用Random类生成随机数字或字母,示例代码如下: Random random = new Random(); string code = ""; for (int i = 0; i < 6; i++) { code += random.Next(10); } 将随机生成的验证码保存到Session中,代码如下: …

    C# 2023年6月6日
    00
  • C#高性能动态获取对象属性值的步骤

    下面是关于C#高性能动态获取对象属性值的步骤的完整攻略。 1. 利用反射获取属性信息 在C#中,我们可以使用反射来获取指定对象的属性信息,包括属性的名称、类型、值等。反射是C#编程中的一个重要概念,可以通过System.Reflection命名空间下的Type类、MethodInfo类、PropertyInfo类等相关类型来实现。 示例代码: using S…

    C# 2023年6月1日
    00
  • asp.net neatUpload 支持大文件上传组件

    ASP.NET NeatUpload是一个用于实现大文件上传的组件,它支持各种文件上传场景,并提供了丰富的API以适应不同的需求。下面将详细讲解如何使用该组件实现大文件上传的完整攻略。 1. 安装和配置 首先需要将NeatUpload组件添加到项目中。可使用NuGet安装或者手动下载添加。 Nuget安装: Install-Package NeatUploa…

    C# 2023年6月1日
    00
  • C#使用foreach语句遍历堆栈(Stack)的方法

    介绍C#使用foreach语句遍历堆栈 (Stack)的方法。 1. Stack类简介 在介绍用foreach语句遍历Stack之前,先简单介绍一下Stack类。在C#的System.Collections命名空间中,有一个名为Stack的类。Stack是一种后进先出(LIFO)的数据结构,可以存储多个对象。其中,堆栈的入栈操作使用 Push方法,而出栈操作…

    C# 2023年6月7日
    00
合作推广
合作推广
分享本页
返回顶部