我有一個用於UWP類庫的UserControl。用戶控件將顯示GPS的信號電平。正確的方式來獲取作爲UWP類庫中的資源嵌入的圖像的uri
我使用的是BitmapIcon
,它顯示信號電平並根據信號電平屬性進行更改。我使用的是BitmapIcon,這樣我可以改變前景色爲主題等
不管怎麼說,這是XAML
<BitmapIcon Grid.Column="1" UriSource="{Binding GpsSignalState, Converter={StaticResource SignalImageConverter}}"
Foreground="{Binding Foreground, ElementName=userControl}"/>
它綁定到財產的ViewModel
,並使用一個轉換器,將信號轉換到正確的圖像。
這裏是轉換器代碼。
public object Convert(object value, Type targetType, object parameter, string language)
{
if(value.GetType() != typeof(SignalStrength))
return null;
var signal = (SignalStrength)value;
switch (signal)
{
case SignalStrength.Excellent:
return new Uri("ms-appx:///Assets/Img/Signal-Bars 4.png");
case SignalStrength.VeryGood:
return new Uri("ms-appx:///Assets/Img/Signal-Bars 3.png");
case SignalStrength.Good:
return new Uri("ms-appx:///Assets/Img/Signal-Bars 2.png");
case SignalStrength.Valid:
return new Uri("ms-appx:///Assets/Img/Signal-Bars 1.png");
case SignalStrength.Bad:
return new Uri("ms-appx:///Assets/Img/Signal-Bars 0.png");
default:
throw new ArgumentOutOfRangeException();
}
}
正如你所看到的圖像位於調用/Assets/Img/
的圖像被設定打造類型Embedded Resource
一個文件夾中。
我想象有人會問這使組件名稱爲Hardware.Sensors.GPS
我的問題是,圖像不會顯示。我沒有錯誤,我可以在轉換器中設置一個斷點來執行它。
我已經嘗試建立一個URI如
Uri("/Assets/Img/Signal-Bars 4.png", UriKind.Relative);
和
Uri("ms-appx:///Assets/Img/Signal-Bars 4.png");
和
Uri("ms-appx:///Hardware.Sensors.GPS,component;/Assets/Img/Signal-Bars 4.png");
但沒有似乎工作的各種方式。
任何想法?
他們需要成爲「嵌入式資源」的任何特定原因? – AlexDrenea