使用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文件中添加字符串资源。
-
右键点击Resources.resx,选择“打开”。在对应的空白行输入一个新的名称,比如说“HelloWorld”(不带引号)。
-
再次右键点击空白行的Value列,并选择“编辑”。在编辑器窗口中,输入文本“Hello, World!”(不带引号)。
-
保存文件。
下面是如何在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程序集资源来存储图片资源。
-
准备一张图片,将其复制到项目中,右击该文件并选择“属性”。
-
将“生成操作”更改为“Embedded Resource”。
-
在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技术站