Silverlight ComboBox с двумя полями на элемент - PullRequest
0 голосов
/ 03 июня 2011

Я хочу отобразить myItem.title и myItem.url для каждого элемента в наблюдаемой коллекции comboBox.ItemsSource, которая отображается в поле со списком. Другими словами, я хотел бы, чтобы каждая строка в поле со списком удерживала и отображала обе части информации.

Не уверен, как это сделать или возможно ли это.

Как мне написать xaml, а затем заставить itemSource.Add() принимать по 2 предмета на каждый предмет?

Спасибо за любую помощь!

РЕДАКТИРОВАТЬ: (решено)

Я придумал этот xaml, но не знаю, как получить доступ к FiledOne и FieldTwo из кода.

<ComboBox Canvas.Left="410" Canvas.Top="174" Height="23" Name="addresses_combo" Width="408" SelectionChanged="address_changed">
                <ComboBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="{Binding FieldOne, Mode=OneWay}" />
                            <TextBlock Text="{Binding FieldTwo, Mode=OneWay}" />
                        </StackPanel>
                    </DataTemplate>
                </ComboBox.ItemTemplate>
</ComboBox>

EDIT2: (решено)

Как вставить новую строку между двумя TextBlock узлами?

<TextBlock Text="{Binding FieldOne, Mode=OneWay}" />
<TextBlock Text=" \n <--this doesn't work obviously" />
<TextBlock Text="{Binding FieldTwo, Mode=OneWay}" />

-Или хотя бы один из них жирный, а другой обычный. Так что между двумя полями будет четкая разница ...

1 Ответ

2 голосов
/ 03 июня 2011

С предоставленным вами XAML вам понадобится что-то вроде этого:

itemSource.Add(new ItemClass(title,url));

Определите ItemClass как-то так:

public class ItemClass
{
    public string FieldOne {get;set;}
    public string FieldTwo {get;set;}
}
...