Проблемы с привязками в Xamarin.Forms - PullRequest
0 голосов
/ 16 марта 2020

Я знаю, что это базовый c обязательный вопрос, но я не могу понять, как он работает с Xamarin. (Таким образом, любые ссылки на хорошее объяснение более чем приветствуются.)

Я пытаюсь создать «Редактировать страницу ингредиента» и пытаюсь привязать свойство ингредиента к html. У меня 2 проблемы: 1. На этикетке с именем original не отображается Ingridient.ToString 2. Если я изменяю значение Amount и нажимаю кнопку «Сохранить», она не изменяется на странице, предшествующей этому ViewIngredientPage

Что я делаю неправильно?

У меня есть следующее определение класса:

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ViewIngredientPage : ContentPage
{
    public Ingredient Ingredient { get; set; }

    public ViewIngredientPage(Ingredient item)
    {
        InitializeComponent();
        Ingredient = item;
        DataGrid.BindingContext = Ingredient;
        UnitsPicker.ItemsSource = Ingredient.PossibleUnitsList.Keys.ToList();
   }

    public ViewIngredientPage()
    {
        InitializeComponent();
        DataGrid.BindingContext = Ingredient;
        UnitsPicker.ItemsSource = Ingredient.PossibleUnitsList.Keys.ToList();
    }

    private void saveButton_click(object sender, EventArgs e)
    {
        Navigation.PopAsync();
    }

}}

И следующее определение страницы Xaml:

    <ContentPage.Content>
        <StackLayout>
            <StackLayout Orientation="Horizontal">
                <Label Text="The original:" />
                <Label Text="{Binding Path=ToString }" x:Name="Original" />
            </StackLayout>

            <StackLayout Orientation="Horizontal">
                <Label Text="Suggested:"/>
                <Label Text="{Binding Path=ToString }" x:Name="SuggestedText" />
            </StackLayout>

            <Grid x:Name="DataGrid">
                <Grid.RowDefinitions>
                    <RowDefinition Height="*" />
                    <RowDefinition Height="*" />
                    <RowDefinition Height="*" />
                    <RowDefinition Height="*" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>

                <Label Text="Edit" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" />

                <Label Text="Amount:" Grid.Row="1" Grid.Column="0"/>
                <Entry Text="{Binding Amount, Mode=TwoWay}" Grid.Row="1" Grid.Column="1" />

                <Label Text="Units" Grid.Row="2" Grid.Column="0"/>
                <Picker x:Name="UnitsPicker" SelectedItem="{Binding Units, Mode=TwoWay}" Grid.Row="2" Grid.Column="1" />

                <Label Text="Item" Grid.Row="3" Grid.Column="0"/>
                <Entry Text="{Binding Item, Mode=TwoWay}" Grid.Row="3" Grid.Column="1"/>

            </Grid>
            <StackLayout Orientation="Horizontal">
                <Button Text="Save" Clicked="saveButton_click" />
                <Button Text="Cancel" />
            </StackLayout>

        </StackLayout>
    </ContentPage.Content>
</ContentPage> 
...