【问题标题】:Refresh View When Binding Object Changes绑定对象更改时刷新视图
【发布时间】:2016-09-08 07:18:22
【问题描述】:

我在 WPF 中有一个文本框,它的“文本”属性绑定到字符串“EmployeeSource.ID”,Mode=TwoWay。我的问题是,当我更改 EmployeeSource 对象时,绑定不起作用。我的方法有什么问题?

XAML

<TextBox x:Name="NameTextBox" Margin="5,5,10,5" TextWrapping="Wrap"
Text="{Binding SelectedEmployee.Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Grid.Row="1" Grid.Column="1" />

代码背后

private Employee _selectedEmployee;

public Employee SelectedEmployee
{
    get { return _selectedEmployee; }
    set
    {
        _selectedEmployee = value;
        UpdateTextBoxes();
    }
}

private void UpdateTextBoxes()
{
    NameTextBox.Text = SelectedEmployee?.Name;
}

【问题讨论】:

标签: c# wpf


【解决方案1】:

请尝试以下代码。您需要实现 INotifyPropertyChanged 接口才能在 WPF 中实现数据绑定。这是 WPF 数据绑定和 MVVM 模式的基本概念。这应该适合你。

背后的代码:

public class YourClassName : INotifyPropertyChanged
{
    // These fields hold the values for the public properties.
    private Employee _selectedEmployee;

    public event PropertyChangedEventHandler PropertyChanged;

    private void NotifyPropertyChanged(String info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }

    // The constructor is private to enforce the factory pattern.
    private YourClassName()
    {
        _selectedEmployee = new Employee();
    }

    public Employee selectedEmployee
    {
        get
        {
            return this._selectedEmployee;
        }
        set
        {
            if (value != this._selectedEmployee)
            {
                this._selectedEmployee = value;
                NotifyPropertyChanged("selectedEmployee");
            }
        }
    }
}

XAML:

<TextBox x:Name="NameTextBox" Margin="5,5,10,5" TextWrapping="Wrap"
Text="{Binding selectedEmployee.Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Grid.Row="1" Grid.Column="1" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-15
    • 2020-02-06
    • 1970-01-01
    • 2014-05-05
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多