gpt4 book ai didi

c# - x :Name does not exist in the current context,,但其父级确实

转载 作者:行者123 更新时间:2023-12-03 10:57:38 24 4
gpt4 key购买 nike

我想在弹出按钮上更新一些文本。但是,当我尝试在后面的代码中设置其值时,出现错误“名称'dateChosen'在当前上下文中不存在”。

后面的代码:

private void updateDateBinding()
{
lstMenus.Visibility = Visibility.Visible;
dateChosen.Text = ""; // <-- Error here
}

XAML代码:
    <ListView x:Name="lstMenus">

<!-- ...other code... -->

<TextBox x:Name="dateChosen" IsReadOnly="True"
Text="{Binding getDateChosen, Mode=TwoWay}"/>

<!-- ...other code... -->

</ListView>

最初,我只打算使用PropertyChanged事件来更新“dateChosen”,但在调用该事件时并没有更新。因此,我决定显式设置该值,只是为了发现此问题。

令我感到困惑的是,“lstMenus”可以完全按照我的期望进行更改。我的ListView如何存在,但其中的TextBox不存在?

--

PS:我已经从中删除了大部分多余的代码(高度/宽度,背景,对齐方式等),但是我觉得我应该提到,有问题的TextBox嵌套在这段代码中。完整的继承是:

ListView(lstMenus)-ListView.ItemTemplate-DataTemplate-StackPanel-网格-网格-AppBarButton-AppBarButton.Flyout-弹出-网格-网格-TextBox(dateChosen)

我尝试为某些中间标记设置'x:Name'属性,但是当我尝试从后面的代码中获取它们时,总是遇到相同的“不在当前上下文中”问题。

最佳答案

这个问题不时出现。在这里看:http://blog.jerrynixon.com/2012/09/how-to-access-named-control-inside-xaml.html

由于该控件位于生成的容器中,因此实际上已不在范围内。这就是为什么您不能引用它。您将不得不向ListView询问容器,然后向容器询问元素。该博客文章将解释这些步骤。并不是那么困难。

顺便想一想,如果您的ListView中有10个项目,您会不会有10个同名项目?你当然不能那样做。而且,这就是为什么存在此问题的原因。 ListView必须限制子项的范围,因此它不会违反简单的OOP。

关于c# - x :Name does not exist in the current context,,但其父级确实,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39902177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com