阿里网站怎么做,网站建设管理情况汇报,网站下载系统,网站建设报告论文百度文库测试环境#xff1a;
vistual studio 2017
.net framework 3.5
window 10 新建WPF应用(.net framework)#xff0c;项目名称为#xff1a;WpfDemo#xff0c;如下图#xff1a; 新建完项目后#xff0c;默认带有一个名为MainWindow.xaml的代码 一 简单使用字符串资源…测试环境
vistual studio 2017
.net framework 3.5
window 10 新建WPF应用(.net framework)项目名称为WpfDemo如下图 新建完项目后默认带有一个名为MainWindow.xaml的代码 一 简单使用字符串资源
想要使用字符串得在Window标签中引入对应的命名空间
xmlns:sclr-namespace:System;assemblymscorlib如下图 格式为xmlns自己起的别名clr-namespace命名空间名称;assembly程序集名称
当某一天我不记得要引用那个命名控件时我们可以这样
MainWindow.xaml.cs后台代码中输入string然后转到定义就可以看到对应的dll名称和命名空间了 可以看到程序集名称为mscorlib命名空间为System如下图 接着我们就可以在Button控件上通过key的方式使用资源了 上图中的StaticResource代表使用静态资源显示也可以使用动态资源DynamicResource进行显示 这就引出了静态资源和动态资源的区别后面再谈 二 继承FrameworkElement类的控件都有Resources这个属性这就意味着该控件能在控件标签内定义资源。
如Window顶级控件如下图 如StackPanel控件、TextBox控件和Button控件等基本上所有的控件都有Resources这个属性如下图 你注意观察一下上图中不同控件下的资源键值key都为txt2但都不报错那以那个为准呢我们大概都能猜到是从里到外进行寻找如果在Button控件上使用key值则会先找Button自己定义的没找到再往上寻找StackPanel中声明的资源如果还是没找到则会再会往Window标签寻找。 三 定义对象作为资源
在步骤一中我们只是简单使用了一下字符串但实际情况中类型可是多种多样的测试步骤如下
3.1 定义一个实体类名为Student2,并编辑如下
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using System.Windows.Data;namespace WpfDemo
{public class Student2{public string Name { set; get; }}
}然后生成项目
3.2 在前台xaml代码中引入该类对应的命名空间
格式为xmlns自己起的名称clr-namespace:本项目使用的命名空间
由于是本项目就不用使用本项目对应的dll名称了 在这里用到了BindingSource指定的是静态资源stu2Path指定要显示对应的那个属性这里是要显示Student2的Name属性运行程序没有任何问题。 但是如果把静态资源修改为动态资源DynamicResource在设计界面中使用没有任何问题能正常显示如下图 但运行程序就会报如下的错误真的好奇怪
System.Windows.Markup.XamlParseExceptionHResult0x80131501MessageA DynamicResourceExtension cannot be set on the Source property of type Binding. A DynamicResourceExtension can only be set on a DependencyProperty of a DependencyObject.Source无法计算异常源StackTrace:
无法计算异常堆栈跟踪四 在后台代码中获取资源的值并修改资源值
可以通过this.Resources[key]或者this.控件名称.FindResource(key) 通过非本控件的FindResource(key)也能找到对应的资源如下图 五 静态资源和动态资源的区别
出了点幺蛾子还没整明白要休息了后续再看看