Пожалуйста, имейте в виду, что это просто рудиментарный пример. Всегда хорошо проверять данные, выбранные пользователем или нет. И это не единственное решение вашего вопроса. По моему мнению, для вас более важно понять основную систему и что это означает для переноса данных между windows, прежде чем просто скопировать решения отсюда.
Это действительно простой пример того, как вы можете передавать данные между windows: это просто свойство c publi с приватным установщиком. После того, как пользователь нажимает кнопку, чтобы выбрать категорию, свойство устанавливается и окно закрывается.
private void BtnCategory_Click(object sender, RoutedEventArgs e)
{
CategoryWindow categoryWindow = new CategoryWindow();
categoryWindow.ShowDialog();
if(string.IsNullOrEmpty(categoryWindow.CategoryTitle))
{
// category is empty or not set
}
else
{
// category is set and not empty
}
}
public partial class CategoryWindow : Window
{
public string CategoryTitle { get; private set; }
public CategoryWindow()
{
InitializeComponent();
}
private void BtnChoose_Click(object sender, RoutedEventArgs e)
{
CategoryTitle = GetSelectedCategory();
this.Close();
}
private string GetSelectedCategory()
{
return string.Empty; // Return the selected Category here... string.Empty is just a placeholder!
}
}
Если оба windows должны оставаться открытыми, возможно, события являются правильной вещью для вас. Событие запускается, когда пользователь выбирает категорию. Другие windows могут подписаться на эти события, чтобы получать информацию.
private void BtnCategory_Click(object sender, RoutedEventArgs e)
{
CategoryWindow categoryWindow = new CategoryWindow();
categoryWindow.OnCategoryChanged += CategoryChanged;
categoryWindow.Show();
}
private void CategoryChanged(object sender, CategoryChangedEventArgs e)
{
if (string.IsNullOrEmpty(e.Category))
{
// category is empty or not set
}
else
{
// category is set and not empty
}
}
public partial class CategoryWindow : Window
{
public EventHandler<CategoryChangedEventArgs> OnCategoryChanged;
public CategoryWindow()
{
InitializeComponent();
}
private void BtnChoose_Click(object sender, RoutedEventArgs e)
{
var selectedCategory = GetSelectedCategory();
OnCategoryChanged?.Invoke(this, new CategoryChangedEventArgs(selectedCategory));
}
private string GetSelectedCategory()
{
return string.Empty; // Return the selected Category here... string.Empty is just a placeholder!
}
}
public class CategoryChangedEventArgs : EventArgs
{
public string Category { get; private set; }
public CategoryChangedEventArgs(string category)
{
Category = category;
}
}