是否可以使用事件访问xaml中的特定资源?
我试图在鼠标进入网格时更改图像,但问题是我没有权限从事件中更改图像。
我想做类似的事情:
OnMouseEnter(object sender, MouseEventArgs e) {
((Image)GetResource("logo")).Source = "pathToImage.jpg";
}
logo' logo'是图像资源的名称。
答案 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"));