我最初在MainPage.xaml文件中设置了一个标签,如下所示:
<Label x:Name="Ans"
Text=""
FontSize="18"
FontFamily="Verdana"
FontAttributes="Bold"
TextColor="White"
Grid.Column="1"
Grid.Row="2"
Padding="20,20,0,0"/>
字符串
我希望在运行时将Text
属性更改为一个值。
我在一堂课上试着写了这样的东西:
string retVal;
retVal = "This is a test";
Ans.Text = retVal;
型
但我收到一条信息说:
“名称'Ans'在当前上下文中不存在。”
我该怎么解决这个问题?
3条答案
按热度按时间fcy6dtqo1#
您只能通过属于同一XAML页面/视图的代码隐藏中的
x:Name
访问标签,在您的情况下,这将是 MainPage.xaml.cs,例如:字符串
不能通过
x:Name
属性从其他类访问View元素。XAML文件与其代码隐藏属于同一个类,这就是为什么代码隐藏类被标记为partial
。更常见的方法是使用MVVM pattern and data binding,而不是直接设置
Text
属性。如果您需要基于不属于View或ViewModel的内容更新UI,例如:一个不同的、不相关的View或ViewModel,那么你也可以use the WeakReferenceManager to subscribe to messages并相应地更新UI。
wswtfjt72#
字符串
使用FindByName方法,可以在当前XAML页中查找命名控件。
希望是帮助
evrscar23#
也许你的标签在CollectionView里面!.
我以前也遇到过同样的问题,是一个“CollectionView”问题。让我解释一下,不仅仅是Label,而是CollectionView中的任何元素,它的x:name=“whatever”在代码隐藏中都是未知的。知道你应该考虑也许其他类型的UI集合也有同样的效果,它的内部元素,idk。
我已经测试了所有这些,创建了一个新的ContentPage,并用下面的代码替换它的xaml(不要忘记编辑名称空间)。
字符串
这是代码。
型
您将看到您的代码隐藏可以读取“LabelOutsideCollectionView”,但不能读取“LabelInsideCollectionView”。
我希望它能帮助你或其他人,并希望MAUI团队可以解决这一切。
以下是截至本答案发布时我的计算机上已安装的版本列表。
型
我刚刚向Github上的.NET MAUI仓库报告了一个问题。https://github.com/dotnet/maui/issues/16182