html中有id、name、class对元素进行标识。
id 是这个标签在页面上唯一的一个标识;
name同样也是标识,但可以有多个对象都为name,比如单选按钮(一般表单提交后,要通过name的值来获取对应的值)
class是表示当前标签应用的样式名字
而在wpf中,只有id和name两个属性,id是唯一表示,name是自定义标识,但name并不能相同。
如果需要对元素进行任意分类划分,WPF提供了Tag属性。
//
// 摘要:
// 获取或设置一个可用于存储有关此元素的自定义信息的任意对象值。
//
// 返回结果:
// 预期值。 此属性无默认值。
[Localizability(LocalizationCategory.NeverLocalize)]
public object Tag { get; set; }
tag是一个object对象,所以可以使用自定义类对数据进行存储。
class A
{
public int age;
public string name;
}
一个简单的测试程序,单击图片后,单击yes给图片的tag赋值为一个class,单击no读取tag的值。
private void Image_MouseDown(object sender, MouseButtonEventArgs e)
{
MessageBoxResult result = MessageBox.Show("Are you love me?", "title", MessageBoxButton.YesNoCancel);
if (result == MessageBoxResult.Yes)
{
Image img = sender as Image;
A a = new A();
a.age = 1;
a.name = "asdfasdf";
img.Tag = a;
}
else if (result == MessageBoxResult.No)
{
Image img = sender as Image;
A b = img.Tag as A;
string imgName = b.name.ToString();
MessageBox.Show(imgName);
}
}