用StringFormat多绑定字符串资源



我正在尝试在TextBlock中从本地化资源中多绑定可格式化的字符串。

字符串如下所示:This record is locked for edit by {0}.

现在我想把它绑定到TextBlock:

<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0}">
            <Binding Source="{x:Static res:LocalizedResources.EntityLockedMessageTitleFormat}" />
            <Binding Path="Entity.LockedBy" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

但不幸的是,这只显示了实际的字符串(包含{0})。

我如何多重绑定这个?最理想的是不使用转换器(纯粹在XAML中)。

想象初始的{}StringFormat的开始。然后可以使用下一个连续索引访问每个Binding值。试试这个:

<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0} {1}.">
            <Binding Source="{x:Static res:LocalizedResources.EntityLockedMessageTitleFormat}" />
            <Binding Path="Entity.LockedBy" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

当对。net类或函数感到困惑时,通常最好去MSDN,在那里你通常可以找到详细的解释和代码示例。有关使用MultiBinding s的更多信息,请参阅MSDN上的多绑定类页面。


更新>>>

在XAML中不能使用string(如Entity {0} is locked by {1} since {2}.)作为string格式。相反,您可以做的是在代码中格式化string,并将结果公开为可以在UI中进行数据绑定的属性。试试这样做:

public string FormattedString
{
    get { return string.Format(YourEntityLockedMessageTitleFormat, Val1, Val2, Val3); }
}

相关内容

  • 没有找到相关文章

最新更新