提取图像对象的属性值

时间:2014-02-21 06:46:26

标签: c# wpf image xaml

我有一张图片,我想在鼠标悬停在图片上时动态添加 dropshadow 效果。

`<Image Name="image1" Stretch="Fill" Source="/Start;component/Images/100px-The_alliance_logo.jpg" MouseEnter="MouseOver" />`

我想在鼠标悬停在图像上时提取Name的值。我在C#中编写了以下代码。

private void MouseOver(object sender, MouseEventArgs e)
    {
            object ObjectName = new object();
            ObjectName = Convert.ToString(sender.GetType().GetProperty("Name").GetValue(sender, null));
            String Obj = (String)ObjectName;
            Obj.Effect = shade(Obj);
    }

我在Obj.Effect = shade(Obj);收到错误,其中说:“'string'不包含'Effect'的定义,也没有扩展方法'Effect'接受'string'类型的第一个参数可以找到(你错过了使用指令或汇编引用吗?)

我该如何解决?

1 个答案:

答案 0 :(得分:0)

如果你坚持做代码隐藏,应该如何编程WPF,那么你需要这样做:

private void MouseOver(object sender, MouseEventArgs e)
{
    var image = sender as Image;
    if(image != null)
    {  
        image.Effect = yourShadowEffect;
    }
}

但是,有一个很好的例子说明如何以WPF方式here进行操作,我强烈建议你看一下,因为代码隐藏的方法会让你无处可去。

编辑:

在此示例中,yourShadowEffect应该是System.Windows.Media.Effects.Effect类型的变量,在您的情况下为DropShadowEffect。您可以通过调用构造函数来创建一个新的:

yourShadowEffect = new DropShadowEffect();

你不应该在你的MouseEventHandler中这样做,而是把它作为一个类变量来节省资源,而不是每次用户将鼠标悬停在图像上时都不创建新资源。