0

我有这样的 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>
4

2 回答 2

1

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

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

于 2012-05-08T21:34:46.067 回答
0

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

<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>
于 2012-05-08T21:37:29.030 回答