如何在XAML中调用含Environment.NewLine的资源文本?
解决TextBlock调用带占位符的多语言资源并插入换行的问题
你可以通过MultiBinding结合StringFormat来实现,把sys:Environment.NewLine作为参数填充到资源文本的占位符中,具体写法如下:
首先确认XAML根元素已经引入所需命名空间:
xmlns:res="clr-namespace:你的资源文件所在的命名空间" xmlns:sys="clr-namespace:System;assembly=mscorlib"
然后修改TextBlock的Text属性绑定:
<TextBlock x:Name="TextBlockInformation" TextWrapping="Wrap"> <TextBlock.Text> <MultiBinding StringFormat="{x:Static res:Messages_en.TestView_01}"> <Binding Source="{x:Static sys:Environment.NewLine}" /> </MultiBinding> </TextBlock.Text> </TextBlock>
原理说明
- 资源文本里的
{0}是占位符,MultiBinding会将sys:Environment.NewLine作为第一个参数传入,替换占位符生成带换行的完整文本。 - 这种方式不需要在资源文件里硬编码换行符,完全依赖系统的标准换行符,跨平台兼容性更好。
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

