【问题标题】:Using C# expressions in WPF binding在 WPF 绑定中使用 C# 表达式
【发布时间】:2014-09-26 03:25:07
【问题描述】:

考虑我的ViewModel 具有IsBusy 属性。 WPF中是否可以有这样的绑定?

<ProgressBar Visiblity="{Binding IsBusy}" ... />
<Button Visiblity="{Binding !IsBusy}" .../>

请注意,我已将 Button 的可见性绑定到 !IsBusy(不忙)。

我曾经在 JavaScript MVVM 框架(如 knockout)上使用此功能。

表达式可能更复杂,例如:

<Button Text="IsBusy && !HasError ? true : false"/>

【问题讨论】:

  • 使用IValueConverter
  • @RohitVats 为所需的所有组合创建 IValueConverters 太难了。没有更多类似 JavaScript 的解决方案吗!?
  • 你不能拥有不存在的东西。当然,您可以创建自己的自定义绑定,解析并尝试执行传递给绑定的文本。罗斯林的到来可能不会太疯狂。但是为不存在的东西的存在而争论是没有意义的。尽管如此,天哪,如果某个胖子从我的烟囱里滑下来给我留下一些赃物,那将是非常甜蜜的。那不是很棒吗?这应该存在!告诉我他存在!
  • @Will 也许我应该发布另一个关于创建自定义绑定的问题。因为我对 Roslyn 很熟悉,所以实现我想要的并不难。
  • 绑定很简单。在询问之前尝试这样做。

标签: c# javascript wpf mvvm


【解决方案1】:

在 WPF 中,您需要绑定到一个属性,因此您无法按照自己的意愿执行 !Busy。如果你想要一些复杂的条件,你应该为此创建一个特定的属性。如果您想以特定方式格式化输出,您可以实现自定义值转换器(即实现接口 IValueConverter)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多