У меня есть текстовое поле в моем главном окне, и у меня есть пользовательский элемент управления с изображениями (растровые изображения). С помощью щелчка мышью на изображении, значение рассчитывается. Это значение должно отображаться в текстовом поле в главном окне.
1) без привязки данных
Как я могу получить доступ к объекту textBox в главном окне из пользовательского элемента управления. Это работает наоборот, то есть я могу получить доступ к textBox пользовательского элемента управления из главного окна, используя имя пользовательского элемента управления и textBox для доступа к textBox, например usercontrol1.textBoxName.
Но мне кажется, что я не могу получить доступ к главному окну textBox из пользовательского элемента управления, такого как mainWindow.textBoxName, потому что пользовательский элемент управления не знает главное окно и не имеет основного объекта Window. Это правильно?
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");
в пользовательском элементе управления. Однако я не могу получить доступ к этому методу.
Поскольку я потратил несколько дней, чтобы понять это, я был бы рад любой помощи.
Я новичок, и это мой первый проект. Спасибо!