单击WPF中的数据绑定按钮

本文关键字:数据绑定 按钮 WPF 单击 | 更新日期: 2023-09-27 18:04:48

我试图实现数据绑定,并有文本框的文本更新,一旦我点击一些按钮。

XAML:

<TextBox  Text="{Binding Path=Output}" />
代码:

    public MainWindow()
    {
        InitializeComponent();
        DataContext = Search;
        Search.Output = "111";
    }
    public SearchClass Search = new SearchClass();

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        Search.Output = "222";
    }
    public class SearchClass
    {
        string _output;
        public string Output
        {
            get { return _output; }
            set { _output = value; }
        }
    }

当我执行程序时,我看到"111",所以MainWindow()的绑定工作,但如果我单击一个按钮-文本框中的文本没有更新(但在调试器中我看到button1_Click被执行和搜索。输出现在等于"222")。我做错了什么?

单击WPF中的数据绑定按钮

你应该在你的SearchClass中实现INotifyPropertyChanged,然后在setter中引发事件:

public event PropertyChangedEventHandler PropertyChanged = delegate { };
public string Output
{
    get { return _output; }
    set 
    { 
        _output = value; 
        PropertyChanged(this, new PropertyChangedEventArgs("Output")); 
    }
}

如果我理解正确的话,SearchClass就是你的TextBlockDataContext。在这种情况下,实现上述方法会有所帮助。

当WPF看到某个类作为绑定源时-它尝试将其强制转换为INotifyPropertyChanged并订阅PropertyChanged事件。当事件被引发时- WPF更新与发送方相关的绑定(PropertyChanged的第一个参数)。

您必须在SearchClass类上实现INotifyPropertyChanged接口。这就是绑定器值被通知其源值已更改的方式。它显示"111"的值,因为它还没有布局(或多或少),但不会更新,直到您实现该接口。