метод.

у установить источник изображения в соответствии с егоDataContext вChildWindow, Вот файл 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>

Это работает нормально, если я переопределитьShow методChildWindow и установите источник изображения:

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

Но это выглядит некрасиво и это не «путь серебряного света», поэтому я решил изменить:

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

Вы видите, у меня естьDialogIconConverter зарегистрирован, чтобы связать источник с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));
    }
    ...
 }

Но это не работает сейчас, у меня есть несколько других преобразователей в этом элементе управления, которые работают нормально. Только этот не работает. Можете ли вы помочь найти проблему?

РЕДАКТИРОВАТЬ:DialogIconType это перечисление, а также это свойствоDialogContext, ЭкземплярDialogContext будет назначенDataContext собственность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;
}

Ответы на вопрос(2)

Ваш ответ на вопрос