Xamarin.Forms的绑定问题
我知道这是一个基本的约束问题,但我不明白它是如何与Xamarin一起工作的。(因此,任何指向好的解释的链接都比wellcome更多) 我正在尝试做一个“编辑成分页面”,并尝试将成分属性绑定到html。我有两个问题: 1.名为original的标签不显示Ingridient.ToString 2.如果我更改了金额的值并按了“保存”按钮,则不会更改此ViewIngredientPage之前页面上的内容 我做错了什么 我对该类有以下定义:Xamarin.Forms的绑定问题,xamarin.forms,binding,Xamarin.forms,Binding,我知道这是一个基本的约束问题,但我不明白它是如何与Xamarin一起工作的。(因此,任何指向好的解释的链接都比wellcome更多) 我正在尝试做一个“编辑成分页面”,并尝试将成分属性绑定到html。我有两个问题: 1.名为original的标签不显示Ingridient.ToString 2.如果我更改了金额的值并按了“保存”按钮,则不会更改此ViewIngredientPage之前页面上的内容 我做错了什么 我对该类有以下定义: [XamlCompilation(XamlCompilatio
[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>
首先,您要为一些单独的元素设置BindingContext,而不是为整个页面设置BindingContext。其次,只能绑定到公共属性。ToString()是一个方法,而不是一个属性。是的,这就是我想要的,将元素绑定到上下文。我确实看到了该方法的绑定,但我无法理解为什么它在我的案例“在我的案例”中不起作用-不支持绑定到方法。您只能绑定到公共属性。