我想根據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>
它的正常工作,如果我重寫ChildWindow
的Show
方法和設置圖像的源:
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));
}
...
}
但它現在不工作,我有幾個其他轉換器在這個控制工作正常。只有這一個不工作。你能幫忙找到問題所在嗎?編輯:DialogIconType
是一個枚舉,也是DialogContext
的財產。 DialogContext
的一個實例將被分配給DialogWindow
的DataContext
屬性。
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;
}
...並查看我的編輯:-) – 2010-11-18 10:23:16
您是否嘗試使用「Images/DialogWindow/Confirm.png」而不是「/Images/DialogWindow/Confirm.png」? – 2010-11-18 10:40:57
@Jakob:試過了,沒有工作。 – 2010-11-18 10:44:44