在 Silverlight 和 TextBlock 中绑定时的 string.format 的一种

本文关键字:format 一种 string TextBlock 绑定 定时 Silverlight | 更新日期: 2023-09-27 18:33:29

我有这样的XAML。基本上,它连接了绑定到不同属性的多个字符串。假设出于某种原因,我不想在 VM 上公开另一个属性以将其作为单个属性。

是否有任何其他 XAML 绑定方法可以使其更紧凑?

<StackPanel Grid.Column="1" Orientation="Horizontal">
    <TextBlock Text="Added by " FontSize="10" Foreground="#2C2C2C" />
    <TextBlock Text="{Binding Document.MEMUser.UserName}" Foreground="#2C2C2C" FontSize="10" />
    <TextBlock Text=" on " FontSize="10" Foreground="#2C2C2C"/>
    <TextBlock Text="{Binding CreatedOn, Converter={StaticResource DateTimeToStringConverter}}" Foreground="#2C2C2C" FontSize="10" />
    <!--BIND COMMANDS TO PARENT ViewModel to process operations-->
    <Button Content="Delete" Command="{Binding DataContext.DeleteCommand, ElementName=LayoutRoot}" CommandParameter="{Binding}" />
    <Button Content="Download" Command="{Binding DataContext.DownloadCommand, ElementName=LayoutRoot}" CommandParameter="{Binding}" />
</StackPanel>

在 Silverlight 和 TextBlock 中绑定时的 string.format 的一种

您可以使用

转换器连接所有字符串,您需要传递一些包含所有所需属性的对象实例。

旁注:您可以在 StackPanel 中将 fontsize 和前景设置为 TextBlock.FontSize 和 TextBlock.Foreground

您可以在TextBlock中使用<Run>元素:

<StackPanel Grid.Column="1" Orientation="Horizontal">
    <TextBlock FontSize="10" Foreground="#2C2C2C">
       <Run Text="Added by "  />
       <Run Text="{Binding Document.MEMUser.UserName}" />
       <Run Text=" on " />
       <Run Text="{Binding CreatedOn, Converter={StaticResource DateTimeToStringConverter}}" />
    </TextBlock>
    <!--BIND COMMANDS TO PARENT ViewModel to process operations-->
    <Button Content="Delete" Command="{Binding DataContext.DeleteCommand, ElementName=LayoutRoot}" CommandParameter="{Binding}" />
    <Button Content="Download" Command="{Binding DataContext.DownloadCommand, ElementName=LayoutRoot}" CommandParameter="{Binding}" />
</StackPanel>