gpt4 book ai didi

xamarin - 如何将 StaticResource 的名称绑定(bind)到 ViewModel 属性?

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

我有一个场景,我的 Xamarin 标签显示来自 ttf 文件的图标。就目前而言,标签如下所示。

<Label
Text="{StaticResource Account}"/>

其中 Account 是我的 Styles.xaml 文件中定义十六进制值的字符串。
<x:String x:Key="Account">&#xe70e;</x:String>

以上工作正常。但是,我想通过 ViewModel 中的属性绑定(bind)图标文本名称。以下不起作用,但我正在考虑这样的事情:
 Text="{StaticResource Binding=IconName}"

我将如何做到这一点?

更新:为这个问题添加更多上下文。

在我的 Styles.xaml 中,我定义了一个对应于它们的十六进制值的字典
<x:String x:Key="Back">&#xe709;</x:String>
<x:String x:Key="Share">&#xe704;</x:String>
<x:String x:Key="Next">&#xe71a;</x:String>
<x:String x:Key="Account">&#xe70e;</x:String>
<x:String x:Key="Bell">&#xe700;</x:String>
<x:String x:Key="Mail">&#xe70e;</x:String>
<x:String x:Key="Help">&#xe72c;</x:String>

此样式文件是我的 xaml 文件的资源。
        <ContentPage.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Styles.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</ContentPage.Resources>

在我的 XAML 文件中,我正在迭代以显示不同的图标。
            <StackLayout
x:Name="ItemsList"
Grid.Row="1"
BindableLayout.ItemsSource="{Binding MenuItems}">
<BindableLayout.ItemTemplate>
<DataTemplate>
<StackLayout>
<Label Text="{StaticResource Account}" FontFamily="{StaticResource FontIcons}"
FontSize="Large"></Label>
</StackLayout>
</DataTemplate>
</BindableLayout.ItemTemplate>
</StackLayout>

在我的列表中,我指定了图标名​​称。
        MenuItems = new List<AppMenuItem>()
{
new AppMenuItem()
{
Title = "View A",
IconSource = "Account",
},
new AppMenuItem()
{
Title = "View B",
IconSource = "Mail",
}

};

更新 2:我正在尝试构建一个值转换器,但我似乎无法访问合并的字典。我在用:

Application.Current.Resources.TryGetValue(value.ToString(), out var retValue);

retValue 总是返回 NULL。

最佳答案

您可以使用数据触发器,

<Label Text="">
<Label.Triggers>
<DataTrigger TargetType="Label"
Binding="{Binding IconName}"
Value="Account">
<Setter Property="Text" Value="{StaticResource Account}"/>
</DataTrigger>
</Label.Triggers>
</Label>
您可以为要匹配的每个条件编写多个 DataTriggers 并设置 StaticResource

关于xamarin - 如何将 StaticResource 的名称绑定(bind)到 ViewModel 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59112475/

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