Xaml Multibinding或字符串连接

时间:2014-02-03 20:34:54

标签: c# xaml windows-phone-8 windows-8 winrt-xaml

我正在尝试有效地构建图像的网址。此图像是大量项目的一部分,其中每个项目仅包含图像URL后缀。包含该集合的对象具有基本URL(参见下文)。

public class MyItems
{
    public string ImageUrlBase {get;set;}
    public List<MyItem> Items {get;set;}
}

public class MyItem
{
    public string ImageUrlSuffix {get;set;}
    public string Name {get;set;}
    public string Description {get;set;}
}

现在,我在ListBox中显示这些项目,我需要将ImageUrlBaseImageUrlSuffix的组合字符串作为ListBoxItem中的图像源(见下文)

<DataTemplate>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <StackPanel Grid.Row="0">
            <StackPanel Orientation="Horizontal">
                <Image Source="{Binding FullImageUrl}" />     <!-- need full url here -->
                <StackPanel MaxWidth="390">
                    <TextBlock Grid.Column="1" Text="{Binding Name}" />
                    <TextBlock Grid.Column="1" Text="{Binding Description}" />
                </StackPanel>
            </StackPanel>
        </StackPanel>
    </Grid>
</DataTemplate>

在将属性添加到MyItem类并手动设置完整的Url之后,我很难过,我对我的选项感到困惑。我正在反序列化MyItems对象,包括MyItem对象的子列表,所以我不相信自定义构造函数会起作用。迭代MyItem对象列表似乎效率极低,但我不知道更好的方法。

任何提示?

1 个答案:

答案 0 :(得分:1)

你最好的解决方案是做这样的事情:

public class MyItems
{
       public string ImageUrlBase { get; set; }
       public List<MyItem> Items { get; set; }
}

public class MyItem
{
    public string ImageUrlSuffix { get; set; }
    public string Name {get;set;}
    public string Description { get; set; }

    public MyItems Parent { get; set; }

    public string ImageUrl
    {
        get
        {
            return Parent.ImageUrlBase + ImageUrlSuffix;
        }
    }
}

你不能简单地进行多重绑定,也不能做一些可以获取“父”DataContext的转换器,所以你必须自己构建它。