在WinRT中模拟Binding.FallbackValue

时间:2013-01-17 12:47:32

标签: c# winrt-xaml

是否有任何工作策略可以模拟WinRT中的Binding.FallbackValue行为?

1 个答案:

答案 0 :(得分:1)

可以使用附加属性来完成。我发现可以用它们修复WinRT的许多限制。

我没有代码,但是这个:

<TextBox local:fallbackProperty="Text" local:fallbackPropertyValue="<NO BINDING SET"
  Text="{Binding random}" />

现在在你的附属属性处理程序中,你通过反射检查fallbackProperty并订阅属性更改:

listener = DependencyPropertyChangedListener.Create(this.myTextBox,“Text”);    listener.ValueChanged + = listener_ValueChanged;

如果收到0 / null,则可以从Text属性中交换BINDING。并用fallbackPropertyValue替换它。你仍然需要跟踪真正的绑定,并确保它在它的时间被重新转换。

此解决方案的限制是每个UI元素只能使用一个fallbackValue。但这很容易扩展到“fallbackValues的列表”。只是语法不再那么方便了。

尽管开发人员需要重新发明轮子,但是WPF几乎所有东西都已到位,并且需要最少的黑客攻击,这是很遗憾的。