XAML 在 ListView 中具有来自 AppResources 的 Labeltext
Posted
技术标签:
【中文标题】XAML 在 ListView 中具有来自 AppResources 的 Labeltext【英文标题】:XAML Having a Labeltext from AppResources inside a ListView 【发布时间】:2021-08-29 20:36:39 【问题描述】:我尝试在 XAML 中的 Listview 中填充 Labeltext。但我想要来自 AppResources 的 Labeltext。我确信我在某个地方忘记了一个微小的细节,比如 using 或 namespace。
还有,这是 XAML:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Arbeitszeitrechner_Forms.Views.WorkdayListPage"
Style="StaticResource PageStyle"
Title="Binding Title"
xmlns:local="clr-namespace:Arbeitszeitrechner_Forms.ViewModels"
xmlns:model="clr-namespace:Arbeitszeitrechner_Forms.Models"
xmlns:appres="clr-namespace:Arbeitszeitrechner_Forms.Resources">
<!--Titel im WorkdaysViewModel zugewiesen und im AppResources definiert-->
<RefreshView x:DataType="local:WorkdaysViewModel" Command="Binding LoadWorkdaysCommand" IsRefreshing="Binding IsBusy, Mode=TwoWay">
<CollectionView x:Name="WorkdaysListView"
ItemsSource="Binding Workdays"
SelectionMode="None">
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout Padding="10" x:DataType="model:WorkdayList">
<Label
LineBreakMode="NoWrap"
Style="DynamicResource ListItemTextStyle"
FontSize="16">
<Label.Text>
<MultiBinding StringFormat="0 1:d">
<Binding Path="Day" />
<Binding Path="Date" />
</MultiBinding>
</Label.Text>
</Label>
<StackLayout Orientation="Horizontal">
<Label x:Name="LblTotalTime"/> <!-- **************THIS LABEL IS THE **** THING THAT I CAN'T POPULATE****************-->
<Label Text="Binding TimeTotal, StringFormat='0:hh:0:mm'"
LineBreakMode="NoWrap"
Style="DynamicResource ListItemTextStyle"
FontSize="13" />
</StackLayout>
<StackLayout.GestureRecognizers>
<TapGestureRecognizer
NumberOfTapsRequired="1"
Command="Binding Source=RelativeSource AncestorType=x:Type local:WorkdaysViewModel, Path=WorkdayTapped"
CommandParameter="Binding .">
</TapGestureRecognizer>
</StackLayout.GestureRecognizers>
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</RefreshView>
以及后面的 xaml.cs 代码:
namespace Arbeitszeitrechner_Forms.Views
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class WorkdayListPage : ContentPage
WorkdaysViewModel _viewModel;
public WorkdayListPage()
InitializeComponent();
BindingContext = _viewModel = new WorkdaysViewModel();
//Normally i would do something like this here, but for some reason i can't:
//LblTotalTime.Text = AppResources.LblTotalTime
protected override void OnAppearing()
base.OnAppearing();
_viewModel.OnAppearing();
Bot 要求我提供更多细节以补偿我复制的大量代码。所以请忽略我在这里发短信的胡言乱语。
【问题讨论】:
【参考方案1】:使用x:Static 扩展名
<Label Text="x:Static resources:AppResources.LblTotalTime" />
【讨论】:
哇,谢谢!但我还必须添加资源关键字的路径:xmlns:resources="clr-namespace:Arbeitszeitrechner_Forms.Resources"以上是关于XAML 在 ListView 中具有来自 AppResources 的 Labeltext的主要内容,如果未能解决你的问题,请参考以下文章
如何强制 ListView 在同一行中显示来自 ObservableCollection 不同元素的两个不同数据
Xamarin 表单 ListView ItemTapped/ItemSelected 命令绑定在 XAML
Xamarin表单ListView ItemTapped / ItemSelected在XAML上绑定命令