Сделайте обработчик события нажатия кнопки, чтобы начать новое событие с именем MainPage_Loaded - PullRequest
1 голос
/ 02 мая 2011

Итак, на данный момент моя страница работает со следующим кодом в моем cs-файле. Что мне нужно изменить, так это добавить обработчик событий, чтобы при нажатии кнопки MainPage_Loaded происходило только после нажатия этой кнопки.

Я понимаю, что линия

this.Loaded += new RoutedEventHandler(MainPage_Loaded);

в данный момент вызывает этот метод для запуска, но когда я пытаюсь вставить этот код в обработчик события button1_click, он не работает.

  public MainPage()
    {
        InitializeComponent();
        this.Loaded += new RoutedEventHandler(MainPage_Loaded);     
    }

    public void button1_Click(object sender, RoutedEventArgs e)
    {


    }

    private void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        var ctx = new HazchemEntities(new Uri("http://devweb.compsci.chester.ac.uk/0808092/CO6009/HazchemService.svc/"));
        App.coll = new DataServiceCollection<tblChemical>(ctx);
        Lst.ItemsSource = App.coll;

        App.coll.LoadCompleted += new EventHandler<LoadCompletedEventArgs>(coll_LoadCompleted);

        var qry = "/tblChemicals?$filter UNNumber = eq'" + Search.Text + "'";
        App.coll.LoadAsync(new Uri(qry, UriKind.Relative));

        if (!App.ViewModel.IsDataLoaded)
        {
            App.ViewModel.LoadData();
        }


   }

Вот код XAML, который я использую.

    <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
        <TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
        <TextBlock x:Name="PageTitle" Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
        <TextBox x:Name="Search"  Height="72" Margin="-4,0,50,0" Text="TextBox" VerticalAlignment="Top" Width="350" HorizontalAlignment="Left"/>
        <Button Content="Go" Height="72" HorizontalAlignment="Left" Margin="350,0,0,0" Name="button1" VerticalAlignment="Top" Width="100" Click="button1_Click" />

    </StackPanel>

Что мне нужно добавить в событие button1_Click, чтобы оно запускало mainpage_loaded только при нажатии этой кнопки?

Спасибо

Ответы [ 3 ]

4 голосов
/ 02 мая 2011

Вы, кажется, что-то неправильно поняли ... Эта строка:

this.Loaded + = new RoutedEventHandler (MainPage_Loaded);

не является , что вызывает немедленный вызов функции void MainPage_Loaded(object sender, RoutedEventArgs e). Он регистрирует обработчик для этого события - когда MainPage завершает загрузку, он внутренне запускает событие Loaded, в свою очередь вызывается обработчик события.

Настройка этого обработчика в button1_Click также не имеет смысла - ваша страница уже хорошо загружена к тому времени, когда можно нажать кнопку.

Если у вас есть какая-то функциональность в функции MainPage_Loaded, которую вы хотите, чтобы button1_Click также использовал, вы должны преобразовать ее в отдельную функцию, которую они оба могут вызывать.

0 голосов
/ 09 ноября 2013

добавить следующий код для button1_Click

MainPage_Loaded(sender,e);
0 голосов
/ 02 мая 2011

Вы назначаете EventHandler событию MainPage Loaded вместо нажатия кнопки.

В конструкторе попробуйте this.button1.OnClick += new RoutedEventHandler(MainPage_Loaded);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...