MultiBinding 中的 XAML 文本格式

Posted

技术标签:

【中文标题】MultiBinding 中的 XAML 文本格式【英文标题】:XAML Text Formatting in MultiBinding 【发布时间】:2021-08-29 07:51:03 【问题描述】:

我正在尝试用不同的格式和不同的方向(左对齐和右对齐)来格式化连接标签。有人知道怎么做吗?

如何使 0 字符串加粗并左对齐以及 1 字符串正常右对齐屏幕?

我的 xml:

    <Label>
        <Label.Text>
            <MultiBinding StringFormat="0      1">
                <Binding Source="Tag:" />
                <Binding Path="Day" />
            </MultiBinding>
        </Label.Text>
    </Label>

【问题讨论】:

如果你需要不同的对齐方式,你应该使用多个标签 例如,我使用水平堆栈布局? 是的,我会这样做 您想发布答案吗? 【参考方案1】:

如果你想使用MultipleBinding,你可以试试下面的代码。但这无法使 0 字符串加粗并左对齐,而 1 字符串正常右对齐到屏幕。

 <Label>
            <Label.Text>
                <MultiBinding StringFormat="0      1">
                    <Binding Path="Model1.Day" />
                    <Binding Path="Model1.Tag" />
                </MultiBinding>
            </Label.Text>
        </Label>

您可以改用 AbsoluteLayout。

 <AbsoluteLayout BackgroundColor="LightBlue" VerticalOptions="EndAndExpand">
        <Label Text="Binding Path=Model1.Day"   BackgroundColor="DarkBlue" TextColor="White"/>
        <Label Text="Binding Path=Model1.Tag"  AbsoluteLayout.LayoutBounds="1, 0, AutoSize, AutoSize" AbsoluteLayout.LayoutFlags="PositionProportional" BackgroundColor="DarkBlue" TextColor="White"/>
    </AbsoluteLayout>

【讨论】:

【参考方案2】:

也许是这样的?

随意调整

   <Label>
        <Label.FormattedText>
            <FormattedString>
                <Span Text="Binding FirstName" FontSize="30" FontAttributes="Bold" ForegroundColor="Fuchsia" />
                <Span Text="Binding LastName" FontSize="20" />
            </FormattedString>
        </Label.FormattedText>
    </Label>

【讨论】:

不幸的是,我也不知道如何将文本与您的解决方案对齐。我选择了水平堆栈面板。【参考方案3】:

我现在带着两个堆栈面板。 第一个垂直,第二个水平:

<StackLayout Orientation="Vertical" Spacing="20" Padding="15">
    <StackLayout Orientation="Horizontal">
        <Label x:Name="LblDate" FontAttributes="Bold" HorizontalOptions="StartAndExpand"/>
        <Label Text="Binding Date"/>
    </StackLayout>
    <StackLayout Orientation="Horizontal">
        <Label x:Name="LblDay" FontAttributes="Bold" HorizontalOptions="StartAndExpand"/>
        <Label Text="Binding Day"/>
    </StackLayout>
    <StackLayout Orientation="Horizontal">
        <Label x:Name="LblTimepair" FontAttributes="Bold" HorizontalOptions="StartAndExpand"/>
        <Label Text="Binding Time1"/>
        <Label Text="-"/>
        <Label Text="Binding Time2"/>
    </StackLayout>
    <StackLayout Orientation="Horizontal">
        <Label x:Name="LblBreak" FontAttributes="Bold" HorizontalOptions="StartAndExpand"/>
        <Label Text="Binding TimeBreak"/>
        <Label Text="h"/>
    </StackLayout>
    <StackLayout Orientation="Horizontal">
        <Label x:Name="LblTotalTime" FontAttributes="Bold" HorizontalOptions="StartAndExpand"/>
        <Label Text="Binding TimeTotal"/>
        <Label Text="h"/>
    </StackLayout>

</StackLayout>

【讨论】:

以上是关于MultiBinding 中的 XAML 文本格式的主要内容,如果未能解决你的问题,请参考以下文章

uwp xaml - 将自定义输入格式设置为文本框

WPF DataGrid MultiBinding到DataGrid ItemSsource中的类

WPF 多值绑定(MultiBinding)与多属性触发器(MultiTrigger)与多数据触发器(MultiDataTrigger)

Xamarin.Forms:MultiBinding IMultiValueConverter 接收 Null 值

访问 GridView 中的 TextBox 文本 (C# / XAML)

TextBlock 中的 XAML 自定义文本