[英]I can't seem to access my ui properties from my codebehind in a listview template
我在Visual Studio 2015中使用ListView模板創建了一個ListView頁面。出於某種原因,盡管我給ui元素名稱賦予了“ x:Name”,但我無法從我的代碼后面訪問ui的屬性。 這是我在Xaml中聲明的ListView:
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout>
<Label Style="{DynamicResource ListItemTextStyle}" Text="Central" />
<Label
x:Name="editField"
Style="{DynamicResource ListItemDetailTextStyle}"
Text="{Binding EmergencyCentralNumber}" />
<Entry
x:Name="entryField"
Completed="Entry_Completed"
IsVisble="false"
Text="{Binding EmergencyCentralNumber}" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
這是我的代碼背后:
async void Handle_ItemTapped(object sender, ItemTappedEventArgs e)
{
if (e.Item == null)
return;
await DisplayAlert("Item Tapped", "An item was tapped.", "OK");
var selectedNumber = (AppUser)e.Item;
//Deselect Item
entryField.IsVisble = true;
editField.IsVisble = false;
//((ListView)sender).SelectedItem = null;
//Deselect Item
//((ListView)sender).SelectedItem = null;
}
async void Entry_Completed(object sender, EventArgs e)
{
var text = ((Entry)sender).Text;
if (string.IsNullOrEmpty(text))
{
await DisplayAlert("Alert", "Please do not leave this field empty", "OK");
}
await Task.Run(() =>
{
var realm = Realm.GetInstance();
var user = realm.All<AppUser>().First();
//cast sender to access the properties of the Entry
realm.Write(() => user.EmergencyCentralNumber = ((Entry)sender).Text);
});
editField.IsVisble = false;
entryField.IsVisble = true;
}
}
為什么會提示我在當前上下文中不存在editField和entryField變量?
我可能是錯的,但是名稱只能在DataTemplate范圍內訪問以進行引用,否則,如果您將事件處理程序放在ListView之外的元素上並按名稱引用您的項目,那么您的代碼應如何知道您要具體引用ListView中的哪個項目? 因為它們在該上下文中都具有相同的名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.