【问题标题】:Window Phone Controls How bind value of textblock depending on value from other bindingWindow Phone 控件如何根据来自其他绑定的值绑定文本块的值
【发布时间】:2013-01-03 20:26:36
【问题描述】:

假设我有以下课程:

Class C {
    public string A {get; set;}
    public string B {get; set;}
}

部分 XAML 文件由 2 个文本块组成

<TextBlock Text="{Binding C.A, TargetNullValue=Not available}"/>
<TextBlock Text="{Binding C.B}"/>

现在我遇到了属性 A 可以为空的问题,因此我使用 TargetNullValue 来发送没有值的消息,但我也希望如果 A 为空 -> B 应该显示为空字符串,否则 B 只是 B . 一切都必须在没有更改对象的情况下工作,因为当 B 的值不依赖于 A 时,B 将在其他地方使用。

简而言之:最好是第二个文本块可以是属性 A 的侦听器(检查 TargetNullValue 时以 A 为目标),但如果它要显示某些内容(使用 Path 属性),它会切换到 B。

我不确定在 XAML 中是否可行,或者我需要做一些解决方法,有什么建议吗?

【问题讨论】:

    标签: windows-phone-7


    【解决方案1】:

    这里是您的限制条件的回顾:

    • 你不能改变班级C
    • 如果C.A 为空,则在第二个TextBox 中显示一个空字符串
    • 如果C.A != null,则在第二个TextBox 中显示C.B
    • C.A 更改时,第二个TextBox 必须相应更新

    我认为你应该这样做:

    • 将第二个 TextBox 绑定到 C.A 以便在该属性更改时收到通知
    • 使用Converter 显示空字符串或C.B

    【讨论】:

    • 我知道你不能这样做。由于 Converter 方法 Convert 只能访问字符串 C.A,因为它已绑定到它。无论如何,你帮我想一个解决办法。我将第二个TextBlock 绑定到C,并使用属性更改事件。编辑 C.A 时触发属性更改,并且 cus 绑定是我可以访问 C.B 的整个对象,只需使用属性。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    相关资源
    最近更新 更多