WPF bind baidu Image

时间:2021-07-18 03:48:30

 as there baidu image has protect refer from other site to use.

need download i use request header add referer:

<Window x:Class="WpfApplication1.WindMsg"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="WindMsg" Closing="Window_Closing" Loaded="Window_Loaded">

    <Grid>

        <Image Stretch="Uniform" Source="{Binding BitmapImg}"/>

        <Button Content="{Binding Text}" HorizontalAlignment="Left" Margin="58,48,0,0" VerticalAlignment="Top" />

    </Grid>

</Window>

 public WindMsg()

        {

            InitializeComponent();

            d = new ImageData() { Url = "http://img0.imgtn.bdimg.com/it/u=3028557787,2951839071&fm=15&gp=0.jpg", Text = "test button text" };

            this.DataContext = d;

        }

        ImageData d;

        public class ImageData

        {

            public string Url { get; set; }

            public string Text { get; set; }

            public ImageSource BitmapImg

            {

                get { return GetImageData(); }

                set { }

            }

            BitmapImage GetImageData()

            {

                using (WebClient wc = new WebClient())

                {

                    wc.Headers.Add("Referer", "http://www.baidu.com");

                    Stream stream = wc.OpenRead(Url);

                    BitmapImage b = new BitmapImage();

                    b.BeginInit();

                    b.StreamSource = stream;

                    b.EndInit();

                    return b;

                }

            }

        }