Я довольно новичок в привязках данных xaml и C #. Я пытаюсь связать Picker с IList, используя ItemsSource, ItemDisplayBinding и SelectedItem. Средство выбора связывается с IList, но не отображает правильную информацию.
Я просмотрел несколько ресурсов, и сборщик приложений Monkey мне очень помог. https://github.com/xamarin/xamarin-forms-samples/tree/master/UserInterface/MonkeyAppPicker
Я пытался повторить то, что он сделал, но безрезультатно.
<Picker ItemsSource="{Binding Mills}"
ItemDisplayBinding="{Binding Name}"
SelectedItem="{Binding SelectedMill, Mode=TwoWay}"/>
namespace TDSDesktop
{
public class PurchaseAgreementBindings : INotifyPropertyChanged
{
public class Mill
{
public string Name { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string Phone { get; set; }
}
public static class MillData
{
public static IList<Mill> Mills { get; private set; }
static MillData()
{
Mills = new List<Mill>();
Mills.Add(new Mill
{
Name = "Name1",
Address1 = "123",
Address2 = "City, State Zip",
Phone = "555-555-5555"
});
Mills.Add(new Mill
{
Name = "Name2",
Address1 = "456",
Address2 = "City, State Zip",
Phone = "888-888-8888"
});
}
}
public IList<Mill> Mills { get { return MillData.Mills; } }
Mill selectedMill;
public Mill SelectedMill
{
get { return selectedMill; }
set
{
if (selectedMill != value)
{
selectedMill = value;
OnPropertyChanged();
}
}
}
}
}
Теоретически, сборщик должен отображать два значения (Name1 и Name2), потому что для ItemDisplayBinding установлено значение Name. Тем не менее, когда я запускаю свою программу, значения "TDSDesktop.PurchaseAgreementBindings + Mill" для обоих. Я явно что-то упускаю. Если бы кто-то мог объяснить, как мне нужно это исправить, я был бы очень признателен.