Запись из одного текстового поля в другое
Создаю мастер на С# (Начало> , <Предыдущая Следующая> и т.д.).
На странице WizardPage2 есть текстовое поле, нажимается кн. "Обзор...".
Код:
public partial class WizardPage2
{
. . .
//Обработчик событий для кнопки "Обзор..."
void BrowseButtonOnClick(object sender, RoutedEventArgs args)
{
DirectoryPage page = new DirectoryPage();
page.Return += PageOnReturn;
NavigationService.Navigate(page);
}
void PageOnReturn(object sender, ReturnEventArgs<String> args)
{
// txtboxFavoriteDir – это Name текстового поля страницы WizardPage2
//(в XAML коде)
txtboxFavoriteDir.Text = …………………………………; //сюда нужно записать текст
}
. . .
}
{
. . .
//Обработчик событий для кнопки "Обзор..."
void BrowseButtonOnClick(object sender, RoutedEventArgs args)
{
DirectoryPage page = new DirectoryPage();
page.Return += PageOnReturn;
NavigationService.Navigate(page);
}
void PageOnReturn(object sender, ReturnEventArgs<String> args)
{
// txtboxFavoriteDir – это Name текстового поля страницы WizardPage2
//(в XAML коде)
txtboxFavoriteDir.Text = …………………………………; //сюда нужно записать текст
}
. . .
}
Код:
public partial class DirectoryPage : PageFunction<String>
{
public DirectoryPage()
{
InitializeComponent();
// txtbox – это Name текстового поля страницы DirectoryPage
//(в XAML коде)
txtbox.SelectionChanged += OnSelectionChanged;
}
//Обработчик события SelectionChanged
void OnSelectionChanged(object sender, RoutedEventArgs args)
{
}
//Обработчик кнопки "Да" для закрытия окна
void OKButtonOnClick(object sender, RoutedEventArgs args)
{
OnReturn(new ReturnEventArgs<String>());
}
}
{
public DirectoryPage()
{
InitializeComponent();
// txtbox – это Name текстового поля страницы DirectoryPage
//(в XAML коде)
txtbox.SelectionChanged += OnSelectionChanged;
}
//Обработчик события SelectionChanged
void OnSelectionChanged(object sender, RoutedEventArgs args)
{
}
//Обработчик кнопки "Да" для закрытия окна
void OKButtonOnClick(object sender, RoutedEventArgs args)
{
OnReturn(new ReturnEventArgs<String>());
}
}
Во-вторых, можно создать общую "модель" - класс, хранящий в себе данные, и передавать его в конструктор всех элементов визарда.
В-третьих, можно хранить где-нибудь ссылку на страницу и обращаться к её свойствами\полям.
Наконец, в твоём случаем можно что-нибудь вроде:
Код:
void PageOnReturn(object sender, ReturnEventArgs<String> args)
{
txtboxFavoriteDir.Text = ((DirectoryPage)sender).txtbox.Text; // костыль, некрасиво, не безопасно, и вообще нехорошо, но почему бы и нет...
}
{
txtboxFavoriteDir.Text = ((DirectoryPage)sender).txtbox.Text; // костыль, некрасиво, не безопасно, и вообще нехорошо, но почему бы и нет...
}
Vitamant, очень признателен. А какое решение было бы наиболее удачным? Спасибо.