Xamarin не находит x: имя в XAML - PullRequest
0 голосов
/ 29 февраля 2020

в моем проекте Xamarin У меня возникла проблема с поиском x: Name в моем MainPage.cs ...

Это мой класс с именем MainWindowViewModel (небольшое приложение, которое действительно должно было быть переименовано)

private string productName { get; set; }
        public string ProductName
        {
            get => productName;
            set
            {
                productName = value;
                OnPropertyChanged("ProductName");
            }
        }

- мой код для моего MainPage.xaml, поэтому ProductName привязан к одному из полей ввода (ниже)

<Entry Grid.Row="8"
               x:Name="productNameEntry"
               Grid.Column="2"
               Grid.ColumnSpan="3"
               Grid.RowSpan="2"
               WidthRequest="120"
               VerticalOptions="Center"
               HorizontalOptions="End"
               Text="{Binding ProductName}"
               Margin="0,0,45,0" />

Это то, что у меня сейчас есть в моем MainPage.cs

void SaveButton_Clicked(object sender, System.EventArgs e)
        {
            MainWindowViewModel APR = new MainWindowViewModel()
            {
                ProductName = productNameEntry,

            };

В настоящее время у меня есть подчеркивание 'productNameEntry' с ошибкой, говорящей, что имя не существует в текущем контексте.

Ответы [ 2 ]

1 голос
/ 29 февраля 2020

На самом деле ваша привязка должна соответствовать go, при условии, что ваша форма / окно имеет

DataContext = {Binding ToYourViewModel}

Затем текстовое поле ввода данных, текстовая привязка которого к {Binding ProductName} автоматически обрабатывает запись и возвращает обратно к вашей модели представления. Это волхвы c под капотом. NET переплет в WPF. Вам не нужно знать имя элемента управления в вашей модели представления. Все, что вам нужно, - это выставить свойство publi c в вашей модели представления. Привязка с вашей точки зрения будет искать свойство с тем же именем. Если он обнаружит его, он автоматически пройдет назад и вперед, независимо от того, читаете ли вы из SQL и вводите в свойство publi c или читаете его обратно из того, что пользователь вводит с экрана.

Просто для проверки, прежде чем ваша форма запускается, просто установите

ProductName = "some test value";

Затем запустите вашу форму. Вы должны увидеть вышеуказанное значение теста. Если вы не можете, привязки не верны. Как только вы исправите это, измените значение в вашей форме на что-нибудь еще и затем нажмите вашу кнопку. В методе обработчика события нажатия кнопки поместите точку останова в первую строку метода, чтобы приостановить программу и посмотреть значение ProductName… оно должно автоматически соответствовать тому, что вы в него ввели.

1 голос
/ 29 февраля 2020

вы должны получить строковое значение, данное из элемента пользовательского интерфейса, добавив .Text use: ProductName = productNameEntry.Text

, но рекомендуется использовать команду, поскольку вы связали свойство Text с вашей моделью представления

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