Xamarin.Forms 在 XAML 中使用局部变量
Posted
技术标签:
【中文标题】Xamarin.Forms 在 XAML 中使用局部变量【英文标题】:Xamarin.Forms Use Local Variable in XAML 【发布时间】:2021-07-12 05:36:07 【问题描述】:假设我的 .cs 文件中有一个名为 number 的变量,我想将我的 xaml 页面中的标签文本设置为 number 的值。我怎样才能做到这一点?我检查了this link,但对我没有帮助。我错过了什么吗?
cs:
public partial class OrdersPage : ContentPage
public string number = Methods.GetMessage("number");
public OrdersPage()
InitializeComponent();
Init();
private async void Init()
this.BindingContext = this;
....
xaml:
<Label FontSize="Subtitle">
<Label.FormattedText>
<FormattedString>
<Span Text="Binding number" FontAttributes="Bold"/>
<Span Text=": " FontAttributes="Bold"/>
<Span Text="Binding PickupNo" TextColor="Binding Source=x:Static static:Constants.PRIMARY_COLOR"/>
</FormattedString>
</Label.FormattedText>
</Label>
【问题讨论】:
P.S:我尝试使用字符串编号 get; set; 但 id 也不起作用 您只能绑定到公共属性。public string number
是公开的,但它不是 C# 属性
@Jason 那么解决方案是什么?
使其成为公共财产。
docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/…
【参考方案1】:
不确定您的其余代码是什么样子,但我的虚拟示例可能会帮助您弄清楚您需要做什么。
既然你在 cmets 中提到你有 CollectionView
,我猜它看起来像这样:
XAML:
<CollectionView x:Name="collectionView" ItemsSource="Binding MyCollection">
<CollectionView.ItemTemplate>
<DataTemplate>
<Label FontSize="Subtitle">
<Label.FormattedText>
<FormattedString>
<Span Text="Binding number" FontAttributes="Bold"/>
<Span Text=": " FontAttributes="Bold"/>
<Span Text="Binding PickupNo"/>
</FormattedString>
</Label.FormattedText>
</Label>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
在您的 .cs 文件中,您应该有 MyItem 的 MyCollection,定义如下:
public partial class OrdersPage : ContentPage
public class MyItem
public string number get return Methods.GetString("number");
public string PickupNo get; set;
public ObservableCollection<MyItem> MyCollection get; set; = new ObservableCollection<MyItem>();
public OrdersPage ()
InitializeComponent();
MyItem Item = new MyItem();
Item.PickupNo = "123456789";
MyCollection.Add(Item);
BindingContext = this;
这会给你这样的输出:
【讨论】:
首先感谢您的帮助。但我想通了。我希望 number 成为类中的普通属性,而不是 ItemSource 的属性。所以在我这样做的方式 number 被认为是项目源的一个属性,但事实并非如此,所以没有显示任何内容。我通过给内容页面一个名称来解决它,然后绑定 Text 属性 Binding Source=x:Reference Name=ordersPage, Path=Number以上是关于Xamarin.Forms 在 XAML 中使用局部变量的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.Forms XAML的辅助功能Code Snippet
Xamarin Forms 使用 XAML 显示来自嵌入式资源的图像
无法滚动在移动设备上使用 Xamarin.Forms 创建的 xaml 页面
使用 Xamarin.Forms(xaml 和 c#)创建超链接