Реализуйте ICustomProperty в C ++ / WinRT - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь сделать данные {Binding} через ICustomProperty (в документации Microsoft нет примеров) в C ++ / WinRT следующим образом:

#include "winrt\Windows.UI.Xaml.Data.h"

using namespace winrt;
using namespace winrt::Windows::UI::Xaml::Data;

struct MyCustomProperty : winrt::implements<MyCustomProperty, ICustomProperty>
{
// To be implemented
};

static MyCustomProperty TitleProperty;

struct MyCustomObject : winrt::implements<MyCustomObject, ICustomPropertyProvider>
{
    ICustomProperty GetCustomProperty(winrt::hstring name)
    {
        return TitleProperty.try_as<ICustomProperty>();
    }
    // Other methods omitted
};

К сожалению, есть ошибка компиляции:

Ошибка C2039: «try_as»: не является членом «MyCustomProperty»

Обратите внимание, что просто return TitleProperty; не работает. Как мне это исправить?

1 Ответ

0 голосов
/ 17 января 2019

После переваривания загадочных жаргонов в этой документации решение состоит в том, чтобы создать мой экземпляр статического свойства, используя winrt::make шаблон функции:

static ICustomProperty TitleProperty = winrt::make<MyCustomProperty>();

А потом я могу просто вернуть его позже:

ICustomProperty GetCustomProperty(winrt::hstring name)
{
    return TitleProperty;
}

Документация winrt::make объединяет оба случая (класс времени выполнения и класс не времени выполнения) в одно без конкретных примеров для моего случая использования не во время выполнения.

...