wpf - "UpdateSourceTrigger"属性的概念,如何在WPF中使用它?

标签 wpf binding

我有一个 TextBlock,与一个对象绑定(bind),当我更新对象的属性时,它没有反射(reflect)在 UI 上,为什么?

代码:

在 Windows1.xaml 中

<TextBlock Name="txtName" Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" Width="100" Height="20" Margin="12,23,166,218" />

和 Windows.xaml.cs 中

public partial class Window1 : Window
{
    Employee obj ;
    public Window1()
    {            
        InitializeComponent();
        obj = new Employee();
        obj.Name = "First";
        txtName.DataContext = obj;
    }

    private void btnUpdate_Click(object sender, RoutedEventArgs e)
    {
        obj.Name = "changed";            
    }
}
public class Employee : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    private string _name;
    public string Name
    {
        set 
        {
            this._name = value;
            OnPropertyChanged(Name);
        }
        get { return this._name; }
    }

    protected void OnPropertyChanged(string name)
    {

        PropertyChangedEventHandler handler = PropertyChanged;

        if (handler != null)
        {

            handler(this, new PropertyChangedEventArgs(name));

        }

    }        
}

最佳答案

OnPropertyChanged(Name);

应该是:

OnPropertyChanged("Name");

否则,如果名称设置为“Kent”,您将引发一个属性更改事件,表明“Kent”属性已更改,而这显然不存在。

至于UpdateSourceTrigger,这只适用于源。您绑定(bind)的属性是目标,而不是源。而且 TextBlock 更新其源代码是没有意义的,因为用户无法修改 TextBlock 文本。另一方面,TextBox 是有意义的。在这种情况下,UpdateSourceTrigger 确定将 TextBox 中的文本推回到源属性的点(例如,当用户键入每个字符时,或者当他们离开时)来自文本框)。

关于wpf - "UpdateSourceTrigger"属性的概念,如何在WPF中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4426837/

相关文章:

wpf - WPF:逐步绑定(bind)MVVM中的TreeView教程

javascript - _this3.state.method 不是函数

c# - 如何 "await"关闭另一个窗口

jquery - IE 中的表单 WebBrowser 控件和 css 渐变

c# - 2 个 XAML 使用相同的 ViewModel 类,但有 2 个单独的实例

c# - 如何将附加属性绑定(bind)到 ComboBox 的 DisplayMemberPath?

c# - 用户控件上的设计和运行时绑定(bind)错误

C# 示例语法问题

c# - Canvas 上的MVVM WPF图像

c# - 如何将组合框绑定(bind)到 WPF 中的多语言值集合?