是否可以使用事件訪問xaml中的特定資源?WPF OnMouseEnter使用事件更改圖像
我試圖讓鼠標進入網格時圖像發生變化,但問題是我無法從事件中更改圖像。
我想要做的事,如:
OnMouseEnter(object sender, MouseEventArgs e) {
((Image)GetResource("logo")).Source = "pathToImage.jpg";
}
其中「標誌」是圖像資源的名稱。
是否可以使用事件訪問xaml中的特定資源?WPF OnMouseEnter使用事件更改圖像
我試圖讓鼠標進入網格時圖像發生變化,但問題是我無法從事件中更改圖像。
我想要做的事,如:
OnMouseEnter(object sender, MouseEventArgs e) {
((Image)GetResource("logo")).Source = "pathToImage.jpg";
}
其中「標誌」是圖像資源的名稱。
看來你只是想設置您的XAML聲明某處圖像元素的Source屬性。所有你需要做的是設置x:Name
屬性,這將產生在你的窗口類的成員,像
<Image x:Name="image"/>
現在,您可以直接訪問該元素在後面的代碼和值分配給這樣的Source屬性:
image.Source = new BitmapImage(new Uri("pathToImage.jpg"));
Working,thanks! – Mike
如果要連接在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}" />
而且有一個S類沿線的omething:
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
}
嗯,不能得到xaml文件來編譯。 :( – Mike
)您可以直接綁定到靜態屬性,包括更改通知,而不是實現單例。請參見:http://10rem.net/blog/2011/11/29/wpf-45-binding-and-change -notification-for-static-properties – Clemens
var image = element.FindResource(「logo」)as Image; is is exception:System.Windows.ResourceReferenceKeyNotFoundException:「logo」resource not found – Mike
「我無法從事件中更改圖像」是什麼意思?你的代碼沒有編譯,還是運行時錯誤?除此之外,通常不需要聲明UI元素作爲資源。那麼你想達到什麼目的? – Clemens
我正在嘗試使用事件更改窗體上圖像元素的圖像源。當mouseEnter事件在特定元素上觸發時,我希望能夠更改不同元素的圖像。 – Mike