在silverlight中向元素添加数据

时间:2011-07-08 19:13:39

标签: silverlight

我正在读取数据并将其输出到交互式打印机地图中。打印机定位数据包含打印机的x坐标,y坐标,品牌,型号和IP。我使用这些数据创建一个图像并定位它。问题是我正在试图找出将make,model和IP绑定到图像的某种方法,以便我可以在将来与它进行交互时轻松阅读。例如,像这样的东西会很好: printerImage.Attribute("Make", "HP"); 这可能/可取吗?

2 个答案:

答案 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");