private Image GetImage() { if (m_Image != null) return m_Image; Assembly a = null; // Try static custom image resolver ResolveImageEventArgs e = new ResolveImageEventArgs(); e.Key = m_ImageSource; e.ResolvedImage = null; MarkupSettings.InvokeResolveImage(e); if (e.Handled) return e.ResolvedImage; // Load from format: ClassLibrary1/ClassLibrary1.MyImage.png or ClassLibrary1/global::ClassLibrary1.Resources.MyImage if (m_ImageSource.IndexOf('/') >= 0) { string[] parts = m_ImageSource.Split('/'); a = Assembly.Load(parts[0]); string ResourceName = parts[1]; if (a != null) { m_Image = LoadImageGlobalResource(parts[1], a); if (m_Image == null) m_Image = LoadImageResource(parts[1], a); if (m_Image != null) return m_Image; } } // Probe Executing Assembly a = Assembly.GetExecutingAssembly(); m_Image = LoadImageGlobalResource(m_ImageSource, a); if(m_Image==null) m_Image = LoadImageResource(m_ImageSource, a); // Probe Entry Assembly if (m_Image == null) { a = Assembly.GetEntryAssembly(); m_Image = LoadImageGlobalResource(m_ImageSource, a); if (m_Image == null) m_Image = LoadImageResource(m_ImageSource, a); } return m_Image; }
internal static void InvokeResolveImage(ResolveImageEventArgs e) { if (ResolveImage != null) ResolveImage(null, e); }