Я создал новое приложение C ++/Winrt/UI3.0, используя все материалы мастера. Я построил решение без изменений, и все сработало просто отлично. < /P>
Далее я хотел создать пользовательский пользовательский элемент управления. Я отправился в Project> «Добавить новый элемент»> «Визуальный C ++»> «Пустое пользовательское управление» (c ++/winrt) и создал пустой пользовательский элемент управления.
Я осторожно коснулся полученных файлов и поместил в элементе в элементе . Я назвал это mynewbutton (
Код: Выделить всё
x:Name="MyNewButton"Когда я построил свой проект (попробовал сборку, затем восстановил и, наконец, попробовал чистку, а затем построить), я получаю бесполезное сообщение об ошибке:
Код: Выделить всё
1>C:\Users\vermi\source\repos\CPP\SecondCppWinRTApp\SecondCppWinRTApp\BlankUserControl.cpp(11,47): warning C4100: 'value': unreferenced formal parameter
1>(compiling source file '/BlankUserControl.cpp')
1>C:\Users\vermi\source\repos\CPP\SecondCppWinRTApp\packages\Microsoft.WindowsAppSDK.1.6.250205002\build\Microsoft.UI.Xaml.Markup.Compiler.interop.targets(660,9): Xaml Internal Error error WMC9999: Unable to cast object of type 'System.Xaml.XamlType' to type 'Microsoft.UI.Xaml.Markup.Compiler.DirectUI.DirectUIXamlType'.
< /code>
Ни один из ботов AI не предлагает никаких полезных предложений, кроме как проверить мой синтаксис XAML. Все безрезультатно. Я не пытался использовать свой пользовательский элемент управления на моей главной странице, поэтому я не настраивал ни один из своих исходных файлов. Я пытался настроить и подтолкнуть кодовые файлы, но это всегда сводится к одному и тому же сообщению об ошибке в одном и том же месте. Моей первой попыткой было построить только настольное приложение из коробки. Это работает нормально, не очень интересно, но это работает. Возможно, мне глупо думать, что я могу использовать волшебников, чтобы получить структуру, чтобы повесить больше кода и ожидать, что он будет строить и работать без какого -либо вмешательства с моей стороны. Я имею в виду, когда я изучал C, используя K & R, я мог бы получить первое приложение «Hello, World» для работы как есть. Проект, над которым я работаю, был создан как пустое приложение, упакованное (Winui 3 в рабочем столе) Код: Выделить всё
Click Me Control
< /code>
blankusercontrol.cpp
#include "pch.h"
#include "BlankUserControl.h"
#if __has_include("BlankUserControl.g.cpp")
#include "BlankUserControl.g.cpp"
#endif
using namespace winrt;
using namespace Windows::UI::Xaml;
namespace winrt::SecondCppWinRTApp::implementation
{
int32_t BlankUserControl::MyProperty()
{
throw hresult_not_implemented();
}
void BlankUserControl::MyProperty(int32_t /* value */)
{
throw hresult_not_implemented();
}
void BlankUserControl::MyClickHandler(IInspectable const&, RoutedEventArgs const&)
{
MyButton().Content(box_value(L"Clicked"));
}
}
< /code>
blankusercontrol.h
#pragma once
#include "winrt/Windows.UI.Xaml.h"
#include "winrt/Windows.UI.Xaml.Markup.h"
#include "winrt/Windows.UI.Xaml.Interop.h"
#include "winrt/Windows.UI.Xaml.Controls.Primitives.h"
#include "BlankUserControl.g.h"
namespace winrt::SecondCppWinRTApp::implementation
{
struct BlankUserControl : BlankUserControlT
{
BlankUserControl()
{
// Xaml objects should not call InitializeComponent during construction.
// See https://github.com/microsoft/cppwinrt/tree/master/nuget#initializecomponent
}
int32_t MyProperty();
void MyProperty(int32_t value);
void MyClickHandler(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args);
};
}
namespace winrt::SecondCppWinRTApp::factory_implementation
{
struct BlankUserControl : BlankUserControlT
{
};
}
< /code>
и, наконец,
blankusercontrol.idl
namespace SecondCppWinRTApp
{
[default_interface]
runtimeclass BlankUserControl : Windows.UI.Xaml.Controls.UserControl
{
BlankUserControl();
Int32 MyProperty;
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... vert-types
Мобильная версия