Я хочу отобразить «Установить изображение» перед «Установить имя» в ComboBox, но API, который я использую для извлечения данных, не дает мне URL-адреса, чтобы получить изображение от этого я должен создать это самостоятельно. она тем не менее обеспечивает gatherercode, который все мне нужно, чтобы получить правильное изображение, как это:Получить привязки данных из двух разных мест
Public string SetImageUrl = String.Format("http://gatherer.wizards.com/Handlers/Image.ashx?type=symbol&set={0}&size={1}&rarity={2}", sets.gatherercode, setImageSize, setImageRarity)
, но как я могу связать SetImageUrl к источнику изображения, если он находится в MainPage.xaml.cs, когда я установил ItemSource к MagicSets и DataType в другое пространство имен (appName.Api вместо appName). или как я могу создать свое собственное:
[DataMember(Name = "setImageUrl")]
public string setImageUrl{ get; set; }
Это принимает все значения как приведенную выше строку.
Результат кода, который я теперь я, чтобы получить выпадающий, что есть элемент для каждого набора в комплекте, который имеет textblox, который отображает set.name
XAML код
<StackPanel Orientation="Horizontal">
<ComboBox Name="SetComboBox" ItemsSource="{x:Bind MagicSets}">
<ComboBox.ItemTemplate>
<DataTemplate x:DataType="data:Set">
<StackPanel Orientation="Horizontal">
<Image source="{Binding imageUrl}"/>
<TextBlock Text="{x:Bind name}"/>
</Stackpanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
SetDataWrapper Код
[DataContract]
public class Set
{
[DataMember(Name = "code")]
public string code { get; set; }
[DataMember(Name = "name")]
public string name { get; set; }
[DataMember(Name = "type")]
public string type { get; set; }
[DataMember(Name = "border")]
public string border { get; set; }
[DataMember(Name = "mkm_id")]
public int mkm_id { get; set; }
[DataMember(Name = "booster")]
public IList<object> booster { get; set; }
[DataMember(Name = "mkm_name")]
public string mkm_name { get; set; }
[DataMember(Name = "releaseDate")]
public string releaseDate { get; set; }
[DataMember(Name = "gathererCode")]
public string gathererCode { get; set; }
[DataMember(Name = "magicCardsInfoCode")]
public string magicCardsInfoCode { get; set; }
[DataMember(Name = "block")]
public string block { get; set; }
[DataMember(Name = "oldCode")]
public string oldCode { get; set; }
[DataMember(Name = "onlineOnly")]
public bool? onlineOnly { get; set; }
}
[DataContract]
public class SetDataWrapper
{
[DataMember(Name = "sets")]
public IList<Set> sets { get; set; }
}
}
Главная страница Код
public ObservableCollection<Card> MagicCards { get; set; }
public ObservableCollection<Set> MagicSets { get; set; }
public MainPage()
{
this.InitializeComponent();
MagicCards = new ObservableCollection<Card>();
MagicSets = new ObservableCollection<Set>();
}
private async void Page_Loaded(object sender, RoutedEventArgs e)
{
ProgressRingToggle(true);
await MagicFacade.PopulateMagicCardsAsync(MagicCards);
await MagicFacade.PopulateMagicSetsAsync(MagicSets);
ProgressRingToggle(false);
}