【发布时间】:2011-03-07 09:04:34
【问题描述】:
我的主窗口上有一个文本框,我有一个带有图像(位图)的用户控件。通过鼠标单击图像,计算出一个值。该值应显示在主窗口的文本框中。 1) 无数据绑定 如何从用户控件访问主窗口上的 textBox 对象。它以相反的方式工作,即我可以使用用户控件的名称和文本框从主窗口访问用户控件文本框,以访问文本框,例如 usercontrol1.textBoxName。 但在我看来,我无法从用户控件访问主窗口文本框,例如 mainWindow.textBoxName,因为用户控件不知道主窗口并且没有主窗口对象。这个对吗? 2) 带数据绑定 它可能适用于数据绑定。但是到目前为止我尝试的方法没有奏效。在 XAML 主窗口中:
TextBox Text="{Binding Path=usercontrol1.GetCycleNumber()}" Name="cycleNumberBox"
在 mainWindow.cs 中:
public partial class MainWindow : Window , INotifyPropertyChanged
我添加了 INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
public void CycleChanged()
{
this.cycleNumber = usercontrol1.GetCycleNumber();
if (this.cycleNumberBox.Text != cycleNumber)
{
this.cycleNumberBox.Text = cycleNumber;
RaisePropertyChanged("cycleNumber");
}
}
usercontrol1.cs 现在我必须用
来表示改变RaisePropertyChanged("cycleNumber");
在用户控件中。但是,我无法访问此方法。 由于我已经花了几天的时间来解决这个问题,所以我很乐意提供任何帮助。 我是初学者,这是我的第一个项目。谢谢!
【问题讨论】:
-
绑定用户控件有点棘手,你有googled 吗?希望有所帮助!
-
我立即想到的2种可能性:一种肮脏的方式和一种更干净的方式:如果您喜欢肮脏的方式,请在创建时将主窗口传递给用户控件的构造函数(如果您在代码中创建它) .干净的方式:使用委托
-
@Morvader 感谢您提供非常好的链接!
标签: wpf user-controls binding