这是我试图调用的方法:
https://msdn.microsoft.com/en-us/library/windows/apps/dn890067.aspx
所以我创建了一个Platform :: 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'类型的左手操作数(或者没有可接受的转换)
我该如何解决这个问题?
答案 0 :(得分:1)
错误C2678:二进制'==':找不到哪个运算符带有'const Windows :: UI :: Color'类型的左手操作数(或者没有可接受的转换)
此错误实际上是由代码行Platform::Collections::Vector<Windows::UI::Color>^ dayColors
引发的。根据{{3}}文档中Vector中的值类型:
对于非标量值类型,例如Windows :: Foundation :: DateTime,或者用于自定义比较 - 例如,objA-&gt; UniqueID == objB-&gt; UniqueID-您必须提供自定义函数对象。
Collections (C++/CX)结构类型可能包含自定义比较,因此需要自定义函数对象。
按如下方式添加自定义结构将解决您的问题:
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);
}