1

有没有可能写这样的东西

<TextBlock Text="{Binding Path=TextSource, StringFormat='{Binding Path=StringFormat}' }"

或者唯一的方法是拥有三个属性:一个用于某个值,另一个用于该值的字符串表示,第三个用于格式字符串。在这种情况下,TextBox 与值的字符串表示绑定。格式字符串更改时字符串表示会更改。

4

1 回答 1

1

是的,一般来说这是可能的,对于您的情况,这是不可能的,因为 StringFormat 不是依赖属性。

绑定仅适用于依赖属性。

如果您希望这样做,请创建一个 Freezable 类型的资源字典并让它继承实际的 DataContext。此外,使用 StaticResource 扩展在 Binding 中设置 StringFormat。

StringFormat 不是 DependencyProperty,但它不接受 {StaticResource someKey}。

这是一种解决方法。但它会起作用。

另一种替代解决方案是附加财产。

附加属性是可绑定的。您需要侦听附加属性的属性更改事件并更改处理程序内的 StringFormat。

于 2013-10-22T11:04:00.887 回答