如何在"XAML for Windows Embedded (Compact 2013)"中切换图像



我有一个用于Windows CE的项目,该项目使用XAML用于Windows Embedded(Compact 2013((也称为"Silverlight for Windows Embedded"(作为GUI。

我在 xaml 中定义了一个图像,现在我想在 c++ 代码后面的部分中切换这个图像。

我该怎么做?

我找到了这个解决方案:

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;
}

相关内容

  • 没有找到相关文章

最新更新