Eve*_*ers 69 wpf binding wpftoolkit wpf-controls wpfdatagrid
我想格式化我的字符串绑定,因为Amount is Xwhere X是绑定到标签的属性.
我见过很多例子,但以下内容不起作用:
<Label Content="{Binding Path=MaxLevelofInvestment,
StringFormat='Amount is {0}'}" />
Run Code Online (Sandbox Code Playgroud)
我也试过这些组合:
StringFormat=Amount is {0}
StringFormat='Amount is {}{0}'
StringFormat='Amount is \{0\}'
Run Code Online (Sandbox Code Playgroud)
我甚至尝试将绑定属性的数据类型更改为int,string和double.似乎没什么用.这是一个非常常见的用例,但似乎不受支持.
Ray*_*rns 179
这不起作用的原因是Label.Content属性是类型的Object,并且Binding.StringFormat仅在绑定到类型的属性时使用String.
发生的事情是:
Binding是拳击的MaxLevelOfInvestment价值并将其存储的Label.Content属性作为盒装十进制值.ContentPresenter.ContentTemplate未设置,因此ContentPresenter查找为该类型DataTemplate定义的内容Decimal.当它找不到时,它使用默认模板.ContentPresenter使用标签ContentStringFormat属性的呈现字符串使用的默认模板.有两种解决方案:
以下是如何使用Label.ContentStringFormat:
<Label Content="{Binding Path=MaxLevelofInvestment}" ContentStringFormat="Amount is {0}" />
Run Code Online (Sandbox Code Playgroud)
以下是如何使用TextBlock:
<TextBlock Text="{Binding Path=MaxLevelofInvestment, StringFormat='Amount is {0}'}" />
Run Code Online (Sandbox Code Playgroud)
注意:为了简单起见,我省略了上述解释一个细节:在ContentPresenter实际使用自己Template和StringFormat属性,但加载过程中这些都是自动模板绑定到ContentTemplate和ContentStringFormat的特性Label,所以它看起来好像ContentPresenter是实际使用Label的性能.
小智 5
普及StringFormatConverter : IValueConverter。将格式字符串传递为ConverterParameter。
Label Content="{Binding Amount, Converter={...myConverter}, ConverterParameter='Amount is {0}'"
Run Code Online (Sandbox Code Playgroud)
另外,StringFormatMultiConverter : IMultiValueConverter当您需要多个格式字符串中的对象时,请使用make Completed {0} tasks out of {1}。
| 归档时间: |
|
| 查看次数: |
53193 次 |
| 最近记录: |