示例#1
0
        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;
        }
示例#2
0
 internal static void InvokeResolveImage(ResolveImageEventArgs e)
 {
     if (ResolveImage != null)
         ResolveImage(null, e);
 }