Привязка данных ItemsSource не связана должным образом - PullRequest
0 голосов
/ 07 мая 2019

Я довольно новичок в привязках данных 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" для обоих. Я явно что-то упускаю. Если бы кто-то мог объяснить, как мне нужно это исправить, я был бы очень признателен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...