Как переключить изображение в «XAML для Windows Embedded (Compact 2013)»?

У меня есть проект для Windows CE, который использует XAML для Windows Embedded (Compact 2013) (также известный как «Silverlight для Windows Embedded») для графического интерфейса.

Я определил изображение в xaml, и теперь я хочу переключить это изображение в коде c ++ за частью.

Как мне это сделать?

0

Решение

Я нашел это решение:

m_pBatteryStateImageэто изображение, определенное в Xaml.

URI для изображений можно найти в автоматически сгенерированном файле PROJECTNAMEGenerated.rc2

void MainPage::SetBatteryState(BatteryStateFlags batteryState)
{

BSTR src = GetImageSourceUri(batteryState);
SetImage(src);
}

void MainPage::SetImage(BSTR src)
{
IXRApplication* application;
App::GetApplication(&application);
//Check which uri is currently used:
BSTR originalSrc;
IXRImageSource* iSource;
m_pBatteryStateImage->GetSource(&iSource);
IXRBitmapImagePtr bmpSrc = (IXRBitmapImagePtr)iSource;
bmpSrc->GetUriSource(&originalSrc);
//Set new image if source uri is different
if (wcscmp(originalSrc,src)!=0)
{
IXRBitmapImagePtr bitmapImage;
application->CreateObject(IID_IXRBitmapImage, &bitmapImage);
bitmapImage->SetUriSource(src);
m_pBatteryStateImage->SetSource(bitmapImage);
}
}

BSTR MainPage::GetImageSourceUri(BatteryStateFlags batteryState)
{
BSTR src;
//see PROJECTNAMEGenerated.rc2 - the numbers will change if images are added (they are alphabetically sorted).
//TODO make it robust against changes
if(batteryState & BatteryChargerError)
src = TEXT("#105");
else if(batteryState &  BatteryHigh)
src = TEXT("#106");
else if(batteryState & BatteryLow)
src = TEXT("#109");
else
//Show error if nothing else matches (Should not happen)
src = TEXT("#105");
return src;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]