部分图像源绑定与Windows Phone中的额外文本

时间:2014-04-23 19:20:10

标签: c# .net wpf azure windows-phone-8

我想将USER ID绑定到图像源,但绝对链接必须在那里。怎么办?

所以我想要:www.aaaa.com/userid.jpg那里 我的代码在这里。

 <phone:LongListSelector x:Name="userfeed" CacheMode="{x:Null}" Margin="-20,0,-20,10" LayoutMode="List"  Background="white" BorderBrush="#FFE6E6E6" Foreground="#FF171717" >
                            <phone:LongListSelector.ItemTemplate >
                                <DataTemplate>
                                    <StackPanel Grid.Row="0" Margin="15,5,0,0">

                              <image x:name="test" source="{binding id}" />  // <- i want here absolute path how can i bind/type extra text?

                                    </StackPanel>

                                </DataTemplate>
                            </phone:LongListSelector.ItemTemplate>
                        </phone:LongListSelector>

2 个答案:

答案 0 :(得分:2)

给定具有UserId属性的视图模型类,您可以简单地添加另一个只读属性,如UserImageUrl

public class User
{
    private string userId;

    public string UserId
    {
        get { return userId; }
        set
        {
            userId = value;
            OnPropertyChanged("UserId");
            OnPropertyChanged("UserImageUrl");
        }
    }

    public string UserImageUrl
    {
        get { return string.Format("http://www.aaaa.com/{0}.jpg", userId); }
    }
}

然后绑定到新属性,如

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

答案 1 :(得分:0)

由于您没有发布所有代码,我必须推测用户ID属性的外观,但我会做这样的事情......

这是你的xaml

<image x:name="test" source="{binding ImageSource}" /> 

这就是您添加到CS文件中的内容

public class YourClass : INotifyPropertyChanged
{
private String _id;

public String id
{
   get{
        return _id;       
   }
   set{
       _id= value; OnPropertyChanged("id");OnPropertyChanged("ImageSource");
   }
}


private String _RootURL;

public String RootURL
{
   get{
        return _RootURL;     
   }
   set{
       _RootURL = value; OnPropertyChanged("RootURL"); OnPropertyChanged("ImageSource");
   }
}

private String _ImageSource;

public String ImageSource
{
   get{
        return RootURL+ id;       
   }
}

PropertyChangedEventHandler PropertyChanged;

void OnPropertyChanged(String prop){
  PropertyChangedEventHandler handler = PropertyChanged;
  if(handler!=null){
    PropertyChanged(this,new PropertyChangedEventArgs(prop));
  }
}
}

根据Clemens响应

编辑

我想为绿色开发者量身打造这个原始答案。但是,正如克莱门斯在评论中指出的那样,技术方法并非如此。我发布的更新解决方案是一个比转换器更好的选择。传统上,在将数据库值或其他随机非用户友好数据转换为有用数据时使用转换器。例如,如果您的数据库表中有0和1,但您想在其位置显示蓝色或橙色。这是使用转换器的一个很好的理由。

另一方面,使用转换器连接字符串很难使用它们。如果您必须更改URL,则必须转到转换器才能执行此操作。我的答案优越的原因是因为它允许您从任何您喜欢的来源设置根URL。例如数据库或Web JSON响应。然后,将Image绑定到ImageSource属性,该属性将它们连接在一起。