我似乎无法从列表视图模板中的代码隐藏访问我的 ui 属性



我在Visual Studio 2015中使用ListView模板创建了一个ListView页面。由于某种原因,我无法从我的代码隐藏中访问我的 ui 的属性,尽管我已经用"x:Name"为 ui 元素命名。这是我在 Xaml 中声明的列表视图:

    <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;
}

}

为什么我被告知编辑字段和输入字段变量在当前上下文中不存在?

我可能是错的,但名称只能在 DataTemplate 范围内访问以供引用,否则,如果您将事件处理程序放在 ListView 外部的元素上并按名称引用您的项目,您的代码应该如何知道您具体引用的是 ListView 中的哪个项目?因为它们在那种上下文中都有相同的名称。

最新更新