【发布时间】:2021-01-12 18:38:41
【问题描述】:
我的 Xamarin.Forms 应用在 Listview 中显示多个项目的名称。文章的名称通过绑定到包含这些文章的表中的名称字段 (Panier) 来显示。
我希望用户能够更改文章名称的文本大小(当屏幕分辨率较低时,名称会被截断)。
为此,我提供了一个参数表,其中包含用户选择的文本大小。
但是如何在 xaml 代码中表明这一点?
这是一些 xaml 代码:
<Label Text="{Binding Name}"
Margin="10,-4,0,0" FontSize="Medium" TextColor="Black"
FontAttributes="None"
VerticalOptions="Start"
Grid.Column="0"/>
所以我想替换
FontSize="Medium"
使用如下所示的指令:
FontSize="{Binding ???}"
绑定将从参数表中获取值。 但是要找到名字,我在指令后面的代码里有
BindingContext = new Panier();
Panier() 包含Name 字段,但显然不包含文本大小。
您可能需要更改 BindingContext 才能转到参数表,但在 XAML 代码中,FontSize 与 Text 位于同一位置。
总结一下:用户应该可以自己调整Listview中显示的文章名称的文字大小。
编辑给所有回答我的人:
对不起,我不是一个经验丰富的开发人员,我不明白你在为我提供什么; 我相信我会在 Panier 表中添加一个 NameFontSize 字段。因此,我可以在我的 xaml 代码中包含以下代码:
FontSize="{Binding NameFontSize}";
这个解决方案的缺点是这个额外的字段,这意味着每条记录都会有一个关于文本大小的数据,这对于表的所有记录都是相同的。对所有记录重复相同的信息没有多大意义。 如果我错了并且您提出的解决方案更有意义,请更详细地向我解释。 非常感谢。
【问题讨论】:
-
您需要有一个您将绑定的 double 类型的属性(代替“???”)。答案可能在于您的“参数表”是如何/在哪里实现的? (我认为你没有包括在问题中。
-
无论如何你都需要一个属性: 1. 添加一个属性; 2.定义为部分类并添加另一个; 3.定义一个继承自Panier的新类。
标签: xaml listview xamarin.forms font-size