Предполагая, что, поскольку вы пометили этот вопрос "всплывающим окном", вам нужно диалоговое окно, вы можете создать обработчики событий для события click в полях примерно так:
private void On_BoxClicked(sender object, EventArgs e)
{
PopUpBox dialog = new PopUpBox();
var result = PopUpBox.ShowDialog();
if (result == true)
{
//process the result here accessing the properties that
//are needed through the dialog object.
}
}
Вам нужно будет установить DialogResult
, чтобы форма была истинной. Обычно я просто добавляю к событию OnClick
кнопку, которую вы хотите вернуть как успешную, и закрывайте следующее:
this.DialogResult = true;
Для получения дополнительной информации о пользовательских диалоговых формах см .: Пользовательские диалоговые окна
Использование RoutedCommands
Более сложный подход - добавить в форму команду с параметром для каждого поля. Код для фактической обработки от добавления элементов будет более или менее одинаковым, но он добавляет определенные функции (например, отключение события click, если не выполнены определенные условия - определенные в методе CanExecute
):
//the custom command
public static RoutedCommand AddToBox = new RoutedCommand();
//add the can execute method
private void AddToBox_CanExecute(sender object, CanExecuteRoutedEventArgs e)
{
//assuming that this can always execute
e.CanExecute = true;
}
//Executing the command when the button is clicked
//Show the dialog box and get the response
private void AddToBox_Executed(sender object, ExecutedRoutedEventArgs e)
{
PopUpBox dialog = new PopUpBox();
var result = dialog.ShowDialog();
if (result == true)
{
string box = e.Parameter;
//get the result of the dialog where GetResult() is the
//method that returns the necessary information.
//here set to object for the sake of example
object[] obj = dialog.GetResult()
switch (box)
{
case "box1":
//put value into box 1
case "box2":
//put value into box 2
case "box3":
//put value into box 3
}
}
}
Чтобы использовать команду, добавьте ссылку на команду. Сначала вам нужно будет добавить ссылку на пространство имен, предполагая, что эта команда содержится в Example.Window1
:
<Window ...
xmlns:cmd="clr:NameSpace:Example" ... />
Затем добавьте привязку команды
<Window.CommandBindings>
<CommandBinding Command="{x:Static cmd:Window1.AddToBox}"
CanExecute="AddToBox_CanExecute" Executed="AddToBox_Executed" />
</Window.CommandBindings>
Наконец, добавьте команду и параметр в XAML
, например:
<Button Name="Box1"
Command="{x:Static cmd:Window1.AddToBox}"
CommandParameter="Box1" />
Для получения дополнительной информации о пользовательских маршрутизируемых командах в WPF см .: RoutedCommand Class