Image dynamique de la liaison de la source de silverlight

Je veux mettre une image de la source en fonction de sa DataContext dans un ChildWindow. Voici le fichier XAML:

<controls:ChildWindow x:Class="CEM.Controls.DialogWindow"
           xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
           xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls" Title="{Binding Title}">
  ...
  <Image x:Name="DialogIcon"></Image>
  ...
</controls:ChildWindow>

Ça fonctionne si je remplace la Show méthode de la ChildWindow et de définir la source des images:

public new void Show()
{
    DialogIcon.Source = new BitmapImage(new Uri(@"/Images/DialogWindow/Confirm.png", UriKind.Relative));
    base.Show();
}

Mais il semble laid et ce n'est pas la "silverlight façon", je décide donc de changer:

<Image x:Name="DialogIcon" Source="{Binding DialogIconType, Converter={StaticResource DialogIconConverter}}"></Image>

Vous voyez que j'ai un DialogIconConverter enregistré pour lier la source de la DataContext.

public class DialogIconConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
       //currently it's an hard-coded path
       return new BitmapImage(new Uri(@"/Images/DialogWindow/Confirm.png", UriKind.Relative));
    }
    ...
 }

Mais ça ne marche pas maintenant, j'ai plusieurs autres convertisseurs dans ce contrôle qui fonctionnent très bien. Seulement celui-ci ne fonctionne pas. Pouvez vous m'aider à trouver où est le problème?

EDIT: DialogIconType est un enum, et aussi que c'est une propriété de DialogContext. Une instance de DialogContext sera affecté à DataContext propriété de la DialogWindow.

public enum DialogIconType
{ 
Confirm,
Alert,
Error
}
public class DialogContext
{
public string Title { get; set; }
public string Content { get; set; }
public DialogButtons Buttons { get; set; }
public DialogIconType IconType { get; set; }
}
internal DialogWindow(DialogContext context)
{
InitializeComponent();
this.DataContext = context;
}
  • ... et de voir mon edit 🙂
  • Avez-vous essayez d'utiliser "Images/DialogWindow/Confirmer.png" au lieu de "/Images/DialogWindow/Confirmer.png"?
  • Essayé, pas de travail.
InformationsquelleAutor Cheng Chen | 2010-11-18