单击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")。我做错了什么?
你应该在你的SearchClass
中实现INotifyPropertyChanged
,然后在setter中引发事件:
public event PropertyChangedEventHandler PropertyChanged = delegate { };
public string Output
{
get { return _output; }
set
{
_output = value;
PropertyChanged(this, new PropertyChangedEventArgs("Output"));
}
}
如果我理解正确的话,SearchClass
就是你的TextBlock
的DataContext
。在这种情况下,实现上述方法会有所帮助。
当WPF看到某个类作为绑定源时-它尝试将其强制转换为INotifyPropertyChanged
并订阅PropertyChanged
事件。当事件被引发时- WPF更新与发送方相关的绑定(PropertyChanged
的第一个参数)。
您必须在SearchClass类上实现INotifyPropertyChanged接口。这就是绑定器值被通知其源值已更改的方式。它显示"111"的值,因为它还没有布局(或多或少),但不会更新,直到您实现该接口。