Как добавить обработчик нажатий кнопок C ++ / WinRT?

В JavaFX каждый Node может иметь ровно один (1) Parent. См. Страницу Node Class в API JavaFX. Если вы добавите Node к другому Parent, Node теряет свое «соединение» со старым Parent, что означает, что он не будет отображаться или доступен под старым Parent. Метод, который вызывает это в вашем исходном коде, - tab.setContent(myText);.

Чтобы решить вашу проблему, вам нужно создать пять разных (= отдельных) объектов и установить каждый из них в точности один TabPane как child // content.

2
задан user34299 16 January 2019 в 22:00
поделиться

1 ответ

Как перевести информацию о событии Microsoft ButtonBase.Click для C ++ / WinRT в объявление и определение прототипа?

Не уверены, что вы подразумеваете под prototype declaration and definition с тех пор, как дали Сама информация является прототипом.

На этой странице вы можете найти больше информации об обработке событий в C ++ / Winrt. Линк объясняет, как обрабатывать и отзывать события с делегатами, и приводит пример обработки события нажатия кнопки для C++/WinRT. Короче говоря, вам нужно иметь обработчик и зарегистрировать его через делегата.

// function that handles event
void MainPage::ClickHandler(IInspectable const& /* sender */, RoutedEventArgs const& /* args */)
{
    Button().Content(box_value(L"Clicked"));
}
...
// register above function for event handler
Button().Click({ this, &MainPage::ClickHandler });

UPD: Я пытался проверить на предмет ошибки The document item has no code-behind file. Add a code-behind file and a class definition before adding event handlers, когда пользователь пытается получить доступ к свойствам и обработчикам событий. Я мог бы легко воспроизвести эту проблему, создав пустое приложение (C ++ / Winrt) после установки расширения cppwinrt .

Я проверил пример приложения для редактирования фотографий из ms github для дальнейшей отладки этой проблемы. В этом примере приложения мне не удалось загрузить режим разработки XAML. Сначала он попросил меня обновить версию Windows до 1809, но мне не удалось обновить. Поэтому я решил вернуться к этому идентификатору коммита, который не требует обновления Windows 1809.

После этого проект XAML завершился ошибкой Some assembly references are missing. Building to restore the NuGet cache might resolve this issue.. Исследования привели меня к этой проблеме , которая закрыта следующим комментарием

Это в настоящее время не поддерживается. Команда XAML в настоящее время работает над поддержкой дизайнера, поэтому вы должны увидеть это в будущем обновлении Windows SDK.

После открытия проблемы в MS docs github я получил от них следующий ответ, и согласно странице документации MS была обновлена.

Я добавил следующую информацию в подраздел «Пустое приложение (C ++ / WinRT)» этой темы, поскольку это шаблон проекта, который использует XAML в качестве пользовательского интерфейса.

«Поддержка поверхности разработки Visual Studio XAML для C ++ / WinRT близка к паритету с C #. Единственным исключением является вкладка Events в окне Properties. В C # проекте вы можете использовать эту вкладку для добавления обработчиков событий; в C ++ / Проект WinRT, такого средства нет. Но посмотрите, как обрабатывать события, используя делегаты в C ++ / WinRT, чтобы получить информацию о том, как добавить обработчики событий в ваш код. "

Это изменение должно скоро появиться. Пожалуйста, дайте мне знать, если я могу добавить что-нибудь еще.

0
ответ дан miradham 16 January 2019 в 22:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: