Я хочу установить источник изображения в соответствии с его DataContext
в ChildWindow
. Вот файл XAML:Связывание источника динамического изображения в silverlight
<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();
}
Но это выглядит некрасиво и это не «Silverlight путь» , так что я решил изменить:
<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));
}
...
}
Но он не работает сейчас, у меня есть несколько других преобразователей в этом управлении, которые работают нормально. Только этот не работает. Можете ли вы найти, где проблема?
EDIT: 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;
}
... и см. мое редактирование :-) –
Вы пытались использовать «Images/DialogWindow/Confirm.png» вместо «/Images/DialogWindow/Confirm.png»? –
@Jakob: Пробовал, не работает. –