如何在cppwinrt中为按钮绑定单击处理程序

时间:2019-12-01 10:47:52

标签: c++-winrt

根据此页面https://docs.microsoft.com/en-us/windows/uwp/cpp-and-winrt-apis/binding-property
我正在编写以下代码

/*cl /nologo /Yupch.h /bigobj /await /std:c++latest /EHsc /I. demo.cpp pch.obj /link /winmd /out:appx\App.exe /subsystem:console /appcontainer*/
struct MainPage : PageT<MainPage>
{
  MainPage()
  {
    Application::LoadComponent(*this, Uri(L"ms-appx:///MainPage.xaml"));
  }

  void ClickHandler(Windows::Foundation::IInspectable const& /* sender */, Windows::UI::Xaml::RoutedEventArgs const& /* args */)
  {
    cout << __func__ << endl;
  }
};

MainPage.xaml页面如下

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    <Button Click="ClickHandler">click</Button>
</Page>

但似乎从未调用过MainPage :: ClickHandler,那么正确的方法是什么?非常感谢!

1 个答案:

答案 0 :(得分:0)

您的 MainPage.xaml 在根Page声明中缺少x:Class attribute

<Page x:Class="MyNamespace.MainPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    <Button Click="ClickHandler">click</Button>
</Page>

如果没有该属性,XAML平台将不知道在何处寻找绑定到ClickHandler事件的Click