【发布时间】:2017-03-21 18:10:55
【问题描述】:
在我的程序中,我试图从 Xamarin 应用程序的列表中获取当前 id,以便更改与 Id 等效的布尔值。
在应用程序中,用户由一个列表和一个与每个元素关联的开关表示。目标是在切换开关时将表中的布尔值从 false 更改为 true。
[
在我的 .cs 文件中,我在切换开关时更新布尔值(参见底部的 handle_toggled):
public partial class DefineBuilding : ContentPage
{
//string currentDefineDescription;
//int currentDefineId;
DefineTable current;
private const string Url = "http://localhost:5000/define";
private HttpClient _client = new HttpClient();
private ObservableCollection<DefineTable> _define;
public DefineBuilding(DefineTable defineList)
{
if (defineList == null) throw new ArgumentNullException();
//BindingContext = defineList;
//currentDefineId = defineList.defineId;
//currentDefineDescription = defineList.defineDescription;
current = defineList;
InitializeComponent();
//defineList = Current_item.BindingContext;
}
protected override async void OnAppearing()
{
var content = await _client.GetStringAsync(Url);
var posts = JsonConvert.DeserializeObject<IEnumerable<DefineTable>>(content);
_define = new ObservableCollection<DefineTable>(posts);
defineBuildingItems.ItemsSource = _define;
base.OnAppearing();
}
async void Handle_Toggled(object sender, Xamarin.Forms.ToggledEventArgs e)
{
//current.defineId =
current.defineBool = true;
defineDataService defineTable = new defineDataService();
await defineTable.UpdateData(current);
}
async void Handle_Clicked(object sender, System.EventArgs e)
{
await Navigation.PushAsync(new ChecklistPage());
}
}
}
但是,在处理拨动开关时,我无法获得 ID。在我的 xaml 文件中,我可以获得 ID,但是我不知道如何应用此 ID。
这是来自我的 Xaml 文件的示例(请参阅 BindingContext ="{Binding defineId}" 获取 Id):
<StackLayout Orientation="Horizontal">
<StackLayout Orientation="Vertical">
<Label Text="{Binding defineDescription}"
HorizontalOptions="FillAndExpand" x:Name="Current_item"/>
</StackLayout>
<Switch BindingContext ="{Binding defineId}" HorizontalOptions="EndAndExpand"
Toggled="Handle_Toggled"/>
</StackLayout>
知道如何在我的班级中获得正确的 ID 吗?
【问题讨论】: