图像绑定到字符串

时间:2014-02-18 12:40:14

标签: c# wpf image windows-phone-8 windows-phone

我无法显示此位置的图像Resources / Images / abc.png。

这就是我在做的事情:

public class A
    {
private string image;
public string Image
        {
            get { return image; }
            set
            {
                if (value != this.image)
                {
                    image = value;
                }
            }
        }

}

在我的.CS文件中:

if (somecondition)
                    {
                        a.Image = @"Resources/Images/abc.png";
                    }

在我的XAML文件中:

 <DataTemplate x:Key="TopicDataTemplate" >
<Image Stretch="None" 
                               Grid.Row="1"
                               Source="{Binding Image}"/>
</DataTemplate>

但它没有显示图像,如何解决这个问题?我在这做错了什么?

1 个答案:

答案 0 :(得分:2)

您的图像路径应该没问题,只要在Visual Studio项目中另一个名为abc.png的文件夹中名为Images的文件夹中存在名为Resources的文件,并且构建操作设置为Resource(这是默认值)。

更新我不确定以上是否也适用于Windows Phone。我想从字符串到ImageSource的默认转换可能不像在WPF中那样在该平台上有效。


但是,在任一平台上,如果要在运行时更改Image属性,则需要实现属性更改机制,以通知数据绑定Image属性已更改。一种方法是在类A中实现INotifyPropertyChanged接口:

public class A : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private string image;
    public string Image
    {
        get { return image; }
        set
        {
            image = value;
            RaisePropertyChanged("Image");
        }
    }

    protected void RaisePropertyChanged(string propertyName)
    {
        var propertyChanged = PropertyChanged;
        if (propertyChanged != null)
        {
            propertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

显然,Image绑定也必须正确设置,即模板化项的DataContext包含对A类实例的引用。