0

Вот метод, который я пытаюсь позвонить:Как использовать метод Calendarview :: setdensitycolors из C++ CX

https://msdn.microsoft.com/en-us/library/windows/apps/dn890067.aspx

Так я создаю платформу :: Collections :: Vector и заполнить его , достаточно просто?

Platform::Collections::Vector<Windows::UI::Color>^ dayColors = ref new Platform::Collections::Vector<Windows::UI::Color>(); 
dayColors->Append(Windows::UI::Colors::Green); 
myCalendarView->SetDensityColors(dayColors); 

Однако, я получаю эту ошибку компиляции я не был в состоянии решить для жизни меня:

ошибка C2678: бинарный «==»: ни один оператор не найден, который принимает левого операнда типа «const Windows :: UI :: Color» (или нет приемлемой конверсии)

Как мне обойти это?

ответ

1

ошибка C2678: бинарный '==': ни один оператор не найден, который принимает левого операнда типа 'Const для Windows :: UI :: Color' (или нет приемлемой Convertion)

Эта ошибка фактически вызывается кодовой строкой Platform::Collections::Vector<Windows::UI::Color>^ dayColors. По типам Значения в векторе в Collections (C++/CX) документе:

Для нескалярных типов значений, такие как Windows, :: Foundation :: DateTime, или для пользовательских сравнений, например, objA-> UniqueID == objB-> UniqueID - вы должны предоставить пользовательский объект функции.

Windows::UI::Color - тип структуры может содержать пользовательские сравнения, поэтому нужен специальный объект fuction.

Добавление персонализированного-структуру следующим образом разрешит проблему:

struct MyEqual : public std::binary_function<const Windows::UI::Color, const Windows::UI::Color, bool> 
{ 
    bool operator()(const Windows::UI::Color& _Left, const Windows::UI::Color& _Right) const 
    { 
     return _Left.A == _Right.A; 
    }; 
}; 

void CCalendarView2::MainPage::CalendarView_CalendarViewDayItemChanging(Windows::UI::Xaml::Controls::CalendarView^ sender, Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs^ args) 
{ 
    Platform::Collections::Vector<Windows::UI::Color, MyEqual>^ dayColors = ref new Platform::Collections::Vector<Windows::UI::Color,MyEqual>(); 
    dayColors->Append(Windows::UI::Colors::Green); 
    args->Item->SetDensityColors(dayColors); 
} 
+0

В случае ComponentLibrary: IVector ^GetColors (String^FontFamily, uint32 характер) \t { \t \t Vector ^vec = ref new Vector (); \t \t return vec; \t}, что делать, потому что это дает странную ошибку –

+0

@JuanPabloGarciaCoello, вы можете открыть новый поток, чтобы подробно описать вашу проблему с помощью фрагмента кода. Не забудьте указать информацию об ошибке и внутреннюю ошибку. И, возможно, люди поддерживают вас. –

+0

Да, я понимаю, дайте мне минуту, чтобы подготовить его, спасибо –

Смежные вопросы