【问题标题】:TextBox binding in WPFWPF 中的文本框绑定
【发布时间】:2010-11-13 09:32:00
【问题描述】:

我在 XAML 文件中有一个文本框,在更改文本框中的文本时,不会调用 prop setter。我能够在 ProjectOfficer 文本框中获取值,但无法更新它。我正在使用 MVVM 模式

下面是我的代码 XAML

 TextBox Text="{Binding Path=Officer,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" 
                                x:Name="ProjectOfficer"/>

ViewModel.cs

    public Staff Officer 
    { 
        get 
        { 
            return __con.PrimaryOfficer  ; 
        } 
        set 
        { 
            _con.PrimaryOfficer = value; 
           _con.PrimaryOfficer.Update(true); 
         } 
    }

Staff.cs

public class Staff : EntityBase 
{ 
    public Staff();

    public string Address { get; } 
    public string Code { get; set; } 
    public override void Update(); 
}

谢谢

【问题讨论】:

  • 由于类型不匹配,这绝对是一个绑定问题。对于这种事情,您应该始终关注 VS 中的输出窗口。此外,使用此链接进行一般绑定诊断:bea.stollnitz.com/blog/?p=52
  • +1 安德森,尤其是 mvvm 模式

标签: wpf mvvm


【解决方案1】:

您正在将 TextBox 上的 string 类型的属性绑定到 ViewModel 上的 Officer 类型的属性。我希望 setter 不会被调用,因为 WPF 无法进行转换。

如果您在 Visual Studio 中检查输出窗口,您可能会看到此属性的绑定错误。

【讨论】:

    【解决方案2】:

    尝试类似:

    TextBox text ="{Binding Path=Address,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" 
                                x:Name="ProjectOfficer"/>
    

    确保 TextBox 的持有者链接到一个 Staff 对象。文本框不能直接绑定到对象而不告诉属性要显示(如我上面示例中的地址)。

    【讨论】:

    • 我会修改这个,但我没有代表...我认为这里的“txtAddress”应该是“Text”。
    猜你喜欢
    • 2011-03-29
    • 1970-01-01
    • 2012-11-23
    • 2016-07-22
    • 2012-11-24
    • 2015-10-16
    • 2016-09-20
    • 2010-12-20
    • 2018-01-24
    相关资源
    最近更新 更多