我正在读取数据并将其输出到交互式打印机地图中。打印机定位数据包含打印机的x坐标,y坐标,品牌,型号和IP。我使用这些数据创建一个图像并定位它。问题是我正在试图找出将make,model和IP绑定到图像的某种方法,以便我可以在将来与它进行交互时轻松阅读。例如,像这样的东西会很好:
printerImage.Attribute("Make", "HP");
这可能/可取吗?
答案 0 :(得分:2)
创建自己的类,如果你还没有这样做,它具有你需要的所有属性,你的数据源可能已经提供了这样的对象。
包括FrameworkElements
在内的所有Image
都有一个Tag
属性,可以用于您的确切原因。
printerImage.Tag = instanceOfYourPrinterInfoClass;
然后,您可以通过以下方式检索所需信息: -
YourPrinterInfoClass info = printerImage.Tag as YourPrinterInfoClass;
修改强>
说过可能比Tag
分配对象更好的地方是DataContext
。例如,您可以添加一个工具提示,当鼠标悬停在图像上时,它会呈现这些细节。
答案 1 :(得分:1)
我认为你使用的是System.Windows.Controls.Image
,对吗?在这种情况下,它是DependencyObject
,因此您可以在其上定义和设置附加属性。
public static class PrinterImageExtensions
{
public static readonly DependencyProperty PrinterMakeProperty =
DependencyProperty.RegisterAttached("PrinterMake", typeof(string), typeof(ImageExtensions), new PropertyMetadata(null));
public static string GetPrinterMake(Image obj)
{
return (string)obj.GetValue(PrinterMakeProperty);
}
public static void SetPrinterMake(Image obj, string value)
{
obj.SetValue(PrinterMakeProperty, value);
}
// ...
}
然后使用附加的属性:
PrinterImageExtensions.SetPrinterMake(printerImage, "HP");