Использование метода из класса App в отдельной форме xamarin - PullRequest
0 голосов
/ 09 сентября 2018

Я новичок, так что это должно быть легко исправить для кого-то с опытом. Я ветеринар, пытающийся создать приложение для использования ветеринарами. Я пытаюсь учиться через YouTube и предыдущие посты онлайн, но я не могу найти решение для моего контрольно-пропускного пункта: Я пытаюсь вызвать метод, уже написанный в классе приложения: В настройках формы связывается объем ручного пенициллина. Форма использования отображает этот объем и просит пользователя ввести используемый объем. При нажатии кнопки мне нужно «обновить» рукописный том, но я не могу вызвать метод в классе App (у которого есть get и set) Я упростил для облегчения оценки:

Код приложения:

using Xamarin.Forms;
using Xamarin.Forms.Xaml;

[assembly: XamlCompilation(XamlCompilationOptions.Compile)]
namespace methods
{
    public partial class App : Application
    {
        private const string penicillin = "penicillin";

        public App()
        {
            InitializeComponent();

            MainPage = new NavigationPage(new MainPage());
        }

        public string Penicillin
        {
            get
            {
                if (Properties.ContainsKey(penicillin))
                {
                    return Properties[penicillin].ToString();
                }
                return "";
            }
            set
            {
                Properties[penicillin] = value;
            }
        }
}
}

Форма настроек:

<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="methods.Settings">
    <ContentPage.Content>
        <StackLayout>
            <Label Text="Penicillin Onhand" ></Label>
            <Entry Text="{Binding Penicillin}" Keyboard="Numeric" ></Entry>
        </StackLayout>
    </ContentPage.Content>
</ContentPage>

Код настроек:

using Xamarin.Forms;

namespace methods
{
    public partial class Settings : ContentPage
    {
        public Settings()
        {
            InitializeComponent();
            BindingContext = Application.Current;
        }
    }
}

Форма использования:

<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="methods.Usage">
    <ContentPage.Content>
        <StackLayout>
        <Label Text="Penicillin Held" ></Label>
        <Label x:Name="Held" Text="{Binding Penicillin}" ></Label>
        <Label Text="Penicillin Used" ></Label>
        <Entry x:Name="Using" Placeholder="ml" Keyboard="Numeric" ></Entry>
        <Button Text="Use" Clicked="Used_Clicked"></Button>
        </StackLayout>    
    </ContentPage.Content>
</ContentPage>

Код использования:

using Xamarin.Forms;

namespace methods
{
    public partial class Usage : ContentPage
    {
        public Usage()
        {
            InitializeComponent();
            BindingContext = Application.Current;
        }

        void Used_Clicked(object sender, System.EventArgs e)
        {
            var VUsed = double.Parse(Using.Text);
            var VHeld = double.Parse(Held.Text);
            var Remaining = VHeld - VUsed;

            //how do i code the following? Error:'App' does not contain definition for Penicillin????
            App.Penicillin.value = Remaining;
        }
    }
}

1 Ответ

0 голосов
/ 09 сентября 2018

Вам не нужно создавать новый экземпляр приложения - формы Xamarin уже содержат ссылку на текущий экземпляр

((App)Application.Current).Penicillin = Remaining;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...