WPF OnMouseEnter使用事件

时间:2017-10-13 21:30:26

标签: wpf

是否可以使用事件访问xaml中的特定资源?

我试图在鼠标进入网格时更改图像,但问题是我没有权限从事件中更改图像。

我想做类似的事情:

OnMouseEnter(object sender, MouseEventArgs e) {
((Image)GetResource("logo")).Source = "pathToImage.jpg";
}

logo' logo'是图像资源的名称。

2 个答案:

答案 0 :(得分:1)

如果您附加OnMouseEnter的元素是FrameworkElement,那么您可以尝试执行以下操作:

OnMouseEnter(object sender, MouseEventArgs e) {
    var element = sender as FrameworkElement;
    var image = element.FindResource("logo") as Image;
    image.Source = new BitmapImage(new Uri("pathToImage.jpg"));
}

否则您可能需要更改“资源”:

<Image x:Key="logo" Source="initialImage.jpg" />

类似于:

<Image x:Key="logo" Source="{Binding Source={x:Static LogoImage.SingletonInstance}, Path=Logo}" />

并按照以下方式开课:

public class LogoImage : INotifyPropertyChanged {
    public static LogoImage SingletonInstance { get; } = new LogoImage();

    public ImageSource Logo { get; private set; }
    public void SetLogo(ImageSource image)
    {
        Logo = image;
        RaiseNotifyPropertyChanged(nameof(Logo));
    }

    // Implement INotifyPropertyChanged

}

答案 1 :(得分:1)

看起来你只是想设置在XAML中某处声明的Image元素的Source属性。您需要做的就是设置x:Name属性,它将在您的Window类中生成一个成员,如

<Image x:Name="image"/> 

现在,您可以直接访问后面代码中的元素,并为其Source属性赋值,如下所示:

image.Source = new BitmapImage(new Uri("pathToImage.jpg"));