Я знаю, что это базовый 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>