2017-02-16 1 views
0

В моем MainWindow.xaml у меня есть кадр. Содержимое этого фрейма изменится, когда я нажму кнопку. Так что, если я нажимаю кнопку, чтобы показать частным клиентам, содержимое фрейма показывает сайт частных клиентов:Как сообщить MainWindow, что в папке/Page2.xaml нажата кнопка

private void privatecustomer_Click(object sender, RoutedEventArgs e) 
    { 
     Main.Content = new Privatecustomer.privatecustomer_show(); 
    } 

После нажатия этой кнопки Фрейм изменит содержимое. Новое содержимое показывает Privatecustomer.privatecustomer_show.xaml сейчас. В этом xaml у меня есть еще одна кнопка. Если я нажму на эту кнопку, содержимое рамки в MainWindow должно измениться на «Privatecustomer.privatecustomer_add.xaml».

Но как я могу сказать от privatecustomer_show.xaml к MainWindow.xaml, что кнопка addPrivatecustomer в privatecustomer_show щелкают и что Main.Content должны измениться на

Main.Content = new Privatecustomer.privatecustomer_add(); 

? Надеюсь, я могу получить помощь здесь

+0

Возможно, этот ответ может помочь вам: [Возможно ли инициировать событие click из другой формы?] (Http://stackoverflow.com/questions/4110755/is-it-possible-to-trigger-a-click -event-from-another-form) – Lowxorx

+0

В privatecustomers_show.xaml: 'public event EventHandler ButtonFirstFormClicked; public void addPrivatkunde (отправитель объекта, RoutedEventArgs e) { if (ButtonFirstFormClicked! = Null) ButtonFirstFormClicked (отправитель, e); } ' А в MainWindow.xaml: ' Privatecustomer.privatecustomer_show.ButtonFirstFormClicked + = (с, е) { Main.Content = новый Privatecustomer.privatecustomer_add(); } '} Но это не работает cuz MainWindow не знает' Privatecustomer.privatecustomer_show.ButtonFirstFormClicked + = (s, e) ' – xKushGene

+0

Каждый раз, когда вы нажимаете, вы обрабатываете ту же страницу или вы создаете новую? – Safe

ответ

0

Как насчет добавления события в privatecustomer_show.xaml, на которое может подписаться MainWindow.xaml.

Как это

public event EventHandler AddPrivateCustomer; 

    protected virtual void OnAddPrivateCustomerEventArgs e) 
    { 
    if (AddPrivateCustomer!= null) 
     AddPrivateCustomer(this, e); 
    } 

Update: Обратите внимание на обновленный код, я сделал copy'n'paste ошибку в своей первой версии.

Изменить ваш: частная пустота privatecustomer_Click (объект отправителя, RoutedEventArgs е)

To:

private void privatecustomer_Click(object sender, RoutedEventArgs e) 
{ 
    var privateCustomerContent=new Privatecustomer.privatecustomer_show(); 
    privateCustomerContent.AddPrivateCustomer+=onClick_addPrivateCustomer; 
    Main.Content = privateCustomerContent; 
} 

private onClick_addPrivateCustomer(object o,EventArgs e) 
{ 
    // Change Main.Content 
} 

Идея заключается в том, что ваш privatecustomer_show управления посылает события для того, когда он хочет изменить что-то за пределами того, что у него есть доступ. Вы MainWindow, который имеет полный контроль над всеми дочерними окнами, затем подписывается на каждое событие.

+0

Я не понимаю этого. Если я нахожу ur код в privatecustomer_show.xaml.cs, визуальная студия дает мне ошибку именной ошибки, потому что он не знает «AddPrivateCustomerEventHandler» – xKushGene

+0

Смотрите мой обновленный код, я сделал ошибку кодирования в первой версии. –

+0

Возможно, вы можете сделать это проще, изменив дизайн своего приложения. Вместо кнопки добавления внутри элемента управления showcustomer покажите это в MainWindow. ----------------------- MainWindow ------- ShowCustomer ------- | Список клиентов | ------------------------------------ [Добавить клиента] [Удалить клиента] Это смысл? –

0

Устанавливает Page2.Tag свойство экземпляру вашего MainWindow (используйте привязку в Xaml или просто установите его в коде). После того, как указанная кнопка в Page2 будет нажата, просто используйте свойство Tag (теперь это ваш MainWindow).

Другой вариант заключается в использовании

App.Current.MainWindow 

Когда кнопка нажата. (Предупреждение. Я не знаю структуру вашего проекта, и это может быть не тот случай, который вы ищете).

+0

Я так не думаю. У меня нет нескольких окон. У меня есть 1 Window (MainWindow.xaml), и в этом MainWindow есть Frame, который включает в себя Pages whith a click on a Button – xKushGene

Смежные вопросы