DataContext
に基づいて画像のソースをChildWindow
に設定したいとします。ここでXAMLファイルは次のとおりです。私はChildWindow
のShow
メソッドをオーバーライドして、画像のソースに設定した場合は正常に動作していますシルバーライトでのダイナミック画像ソースバインディング
<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>
:
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>
あなたは、私がDataContext
からソースをバインドするために、登録さDialogIconConverter
を持っている参照してください。
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
はenumであり、またDialogContext
のプロパティです。 DialogContext
のインスタンスはのDataContext
プロパティに割り当てられます。以下に示すようDialogIconType
が、それはvalueconverterせずに動作するはずですが、あなたの画像(例えば "画像/ダイアログウィンドウ/ Confirm.png")へのパスであると仮定すると
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"を使ってみましたか? –
@ヤコブ:試しても働かない。 –