XAML 我不明白为什么我的标签不触发转换器时,内部的跨度,但当它不是?我错过了什么?

f0ofjuux  于 2023-09-28  发布在  其他
关注(0)|答案(1)|浏览(96)

我有两个相同数据的标签示例。一个工作-但不像我想要的那样工作(它根据社区名称而不是社区名称和用户名的不同颜色对所有文本进行着色),另一个工作-但不会触发转换器激发(因此文本按预期显示,但不会通过转换器进行着色)。我 * 认为 * 第二个不触发转换器的是我所追求的。

工作标签,但不执行我想要的操作

<Label 
    x:Name="communityAndUserLabel"
    Grid.Row="2"
    Grid.Column="1"
    FontAttributes="None"
    VerticalOptions="End">
    <Label.Text>
        <MultiBinding StringFormat="{}{0} • {1}" Mode="TwoWay">
            <Binding Path="CommunityName" />
            <Binding Path="Username" />
        </MultiBinding>
    </Label.Text>
    <Label.TextColor>
        <MultiBinding Converter="{StaticResource nameColorMulti}" ConverterParameter="community">
            <Binding Path="CommunityName" />
            <Binding Path="Username" />
        </MultiBinding>
    </Label.TextColor>
</Label>

不会触发转换器但仍显示文本的标签

<Label 
    x:Name="communityAndUserLabel"
    Grid.Row="2"
    Grid.Column="1"
    FontAttributes="None"
    VerticalOptions="End">
    <Label.FormattedText>
        <FormattedString>
            <Span Text="{Binding CommunityName, Mode=TwoWay}" TextColor="{Binding CommunityName, Converter={StaticResource nameColorMulti}, ConverterParameter=community}" />
            <Span Text=" • " TextColor="Gray" />
            <Span Text="{Binding Username, Mode=TwoWay}" TextColor="{Binding Username, Converter={StaticResource nameColorMulti}, ConverterParameter=username}" />
        </FormattedString>
    </Label.FormattedText>
</Label>

你知道我忽略了什么吗?为什么第二个不能触发转换器?

iq0todco

iq0todco1#

今天早上我突然意识到,由于我已经在xaml中分离了文本,我不再需要使用IMultiValueConverter -所以我创建了两个单独的IValueConverter来完成这一任务:

<Label 
    x:Name="communityAndUserLabel"
    Grid.Row="2"
    Grid.Column="1"
    FontAttributes="None"
    VerticalOptions="End">
    <Label.FormattedText>
        <FormattedString>
            <!-- Use Binding markup extensions with Converter attributes -->
            <Span Text="{Binding CommunityName}" TextColor="{Binding CommunityName, Converter={StaticResource communityNameColor}}" />
            <Span Text=" • " TextColor="Grey" />
            <Span Text="{Binding Username}" TextColor="{Binding Username, Converter={StaticResource usernameColor}}" />
        </FormattedString>
    </Label.FormattedText>
</Label>

相关问题