在图像Xamarin.Forms中绑定两个字符串(连接)

时间:2017-06-03 08:57:24

标签: c# xaml xamarin.forms

我有一个场景,我有一个BaseImageUrl 字符串
 private const string BaseImageUrl = "http://eamobiledirectory.com/cooperp/Images/app_images/";

我想要检索到Image中的Xaml视图中的图片,并将其与字符串值office_photo连接,该字符串值具有确切的图像名称 forexample < / em> flower.jpg并且在反序列化JSON后得到它并且它作为List出现,下面是我的Model类:

public class Adverts
    {
            public string office_photo { get; set; }
            public DateTime entryDate { get; set; }
    }

所以我想要的是如何连接BaseUrl中的office_photoXAML,以便获得图片的完整链接。

下面的

是我在ListView中的图片:

<ListView x:Name="listViewTest" HasUnevenRows="true">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout Orientation="Horizontal">

                        <Image  Aspect="AspectFill" Source="{Binding office_photo}" x:Name="advertImage"
                                WidthRequest="200"/>
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

2 个答案:

答案 0 :(得分:1)

使用IValueConverter

这样的东西
public class AddBaseUrlConverter : IValueConverter
    {

        #region IValueConverter implementation

        private const string BaseImageUrl = "http://eamobiledirectory.com/cooperp/Images/app_images/";

        public object Convert (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value is string && ! string.IsNullOrEmpty((string)value))  {

                return string.Format("{0}{1}", BaseImageUrl, (string)value);
            }
            return ""; // 
        }

        public object ConvertBack (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException ();
        }

        #endregion
    }

然后在你的XAML中

<ContentPage.Resources>
        <ResourceDictionary>
            < AddBaseUrlConverter x:Key="cnvInvert"></AddBaseUrlConverter >
        </ResourceDictionary>
        </ContentPage.Resources>

        <Image  Aspect="AspectFill" Source="{Binding office_photo, Converter={StaticResource cnvInvert}}" x:Name="advertImage" WidthRequest="200"/>

(未经测试,但可行)

答案 1 :(得分:1)

只需在视图调制解调器的新属性中连接两个字符串并绑定到该属性即可。它非常简单,只需一行代码: - )

这样的事情:

public string PhotoUrl { get { return BaseImageUrl + office_photo; }}