无法从StringFormat中删除空白。
如果没有“类型”数据,下面的空格不会后退。
ReleaseDate,空间,空间,点,空间,空间,类型,空间(不移除这个空间的原因),颜色
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0:yyyy} · {1} {2}" >
<Binding Path="ReleaseDate" FallbackValue="{x:Null}"/>
<Binding Path="Type" FallbackValue="{x:Null}"/>
<Binding Path="Color" FallbackValue="{x:Null}"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>发布于 2018-05-13 11:07:34
您可能会将MultiBinding及其StringFormat替换为DataTrigger:
<TextBlock>
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Text">
<Setter.Value>
<MultiBinding StringFormat="{}{0:yyyy} · {1} {2}" >
<Binding Path="ReleaseDate" FallbackValue="{x:Null}"/>
<Binding Path="Type"/>
<Binding Path="Color" FallbackValue="{x:Null}"/>
</MultiBinding>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding Type}" Value="{x:Null}">
<Setter Property="Text">
<Setter.Value>
<MultiBinding StringFormat="{}{0:yyyy} · {1}" >
<Binding Path="ReleaseDate" FallbackValue="{x:Null}"/>
<Binding Path="Color" FallbackValue="{x:Null}"/>
</MultiBinding>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>发布于 2018-05-14 12:46:30
虽然使用DataTrigger的方法是有效的,但它非常冗长。我将使其成为一个两步的过程:分别将Type与有空格的StringFormat绑定,然后将所有内容绑定到一起。
<TextBlock Name="Title"
local:Attached.SomeString="{Binding Type,
StringFormat='\{0} ',
TargetNullValue=''}">
<TextBlock.Text>
<MultiBinding StringFormat="{}{0:yyyy} · {1}{2}">
<Binding Path="Login" />
<Binding Path="(local:Attached.SomeString)"
RelativeSource="{RelativeSource Self}" />
<Binding Path="Name" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>如果Type不是null,那么SomeString绑定使用字符串格式,并在末尾返回Type +空格。如果类型为null,则绑定返回空字符串。
SomeString是一个没有特殊意义的可重用附加依赖属性。它宣布为
public class Attached
{
public static readonly DependencyProperty SomeStringProperty =
DependencyProperty.RegisterAttached("SomeString", typeof (string), typeof (Attached));
public static void SetSomeString(UIElement element, string value)
{
element.SetValue(SomeStringProperty, value);
}
public static string GetSomeString(UIElement element)
{
return (string)element.GetValue(SomeStringProperty);
}
}TextBlock具有Tag属性,可用于存储(或绑定)某些数据,但标记的类型为object,不使用绑定中的StringFormat。因此,我不能在这里使用标记,必须创建另一个属性,该属性具有string类型。(还请注意绑定附加属性的特殊语法)
https://stackoverflow.com/questions/50315018
复制相似问题