我正在尝试有效地构建图像的网址。此图像是大量项目的一部分,其中每个项目仅包含图像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中显示这些项目,我需要将ImageUrlBase
和ImageUrlSuffix
的组合字符串作为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
对象列表似乎效率极低,但我不知道更好的方法。
任何提示?
答案 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
的转换器,所以你必须自己构建它。