Próbuję użyć wyliczenia, aby wyświetlić odpowiedni obraz. Do tego mam konwerter wartości, który konwertuje wyliczenie na poprawną nazwę zasobu. Moje zasoby są zdefiniowane następująco:Stosowanie wiązania WPF do przypisania statycznego zasobu
<UserControl.Resources>
<BitmapImage x:Key="AlarmCat1" UriSource="/Lib.Infrastructure;component/Resources/msg_cat1.bmp" />
<BitmapImage x:Key="AlarmCat2" UriSource="/Lib.Infrastructure;component/Resources/msg_cat2.bmp" />
<BitmapImage x:Key="AlarmCat3" UriSource="/Lib.Infrastructure;component/Resources/msg_cat3.bmp" />
<converters:JamCategoryToImageConverter x:Key="AlarmCategoryConverter" />
</UserControl.Resources>
To działa:
<Image Source="{StaticResource AlarmCat1}" />
Ale to nie przetwornica nazywa i prawidłowa wartość jest przekazywana z powrotem. Jaka jest prawidłowa składnia?
<Image Source="{StaticResource { Binding CurrentAlarmItem.AlarmCategory, Converter={StaticResource AlarmCategoryConverter}}}" />
Dla kompletności, jest to funkcja konwersji:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
switch ((AlarmCategory)value)
{
case AlarmCategory.Category1:
return "AlarmCat1";
case AlarmCategory.Category2:
return "AlarmCat2";
case AlarmCategory.Category3:
return "AlarmCat3";
default:
return null;
}
}
Właśnie usunąłem mój konwerter ... ale ja też wypróbuję twoje rozwiązanie. Wyglądaj bardziej intuicyjnie – uncletall
Wyrzucanie wyjątków, ponieważ zasób nie znajduje się w tym samym zespole. – uncletall
To może nie działać. Jestem pewien, że możesz go uruchomić z nieco innym kodem, ale jeśli powyższa odpowiedź zadziała, powinienem to wykorzystać ;-) –