图像源中的 WPF 动态数据绑定

本文关键字:动态 数据绑定 WPF 图像 | 更新日期: 2023-09-27 18:30:07

我做错了什么?

Xaml:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="26*"/>
        <RowDefinition Height="63*"/>
        <RowDefinition Height="67*"/>
    </Grid.RowDefinitions>
    <TextBlock Name ="title" Text="" TextWrapping="NoWrap" Grid.Row="0" Margin="25,10,25,0"/>
    <Image Source="{Binding Path=BindImgURL}" HorizontalAlignment="Left" Height="164" Grid.Row="1" VerticalAlignment="Top" Width="306" Margin="152,0,0,0"/>
</Grid>

C# 代码:

private string Id;
    private string ImgURL;
    public VideoDetails(string Id)
    {
        InitializeComponent();
        this.Id = Id;
        DetailsGenerator dg = new DetailsGenerator(Id);
        this.ImgURL = "Dynamic source";
        this.DataContext = BindImgURL;
        MessageBox.Show(BindImgURL);
    }
    public string BindImgURL
    {
        get { return ImgURL; }
        set
        { ImgURL = value; }
    }

显示源正确!由消息框选中,但没有图像我做错了什么?我尝试删除"path="但不起作用

图像源中的 WPF 动态数据绑定

我想你要么想DataContext设置为this

this.DataContext = this;

或将绑定更改为当前DataContext

<Image Source="{Binding}" .../>

目前,Image将在当前DataContext中搜索BindImgURL,设置为BindImgURL,这是一个string

与您的问题无关,但我还建议您考虑实现INotifyPropertyChanged并为BindImgURL引发PropertyChanged事件,因为目前,在您设置DataContext后,UI不会选择对BindImgURL的任何更改