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();
}
을하지만 추한 모습과는 "실버 방법"아니다 당신은 내가 DataContext
에서 소스를 결합하기가 DialogIconConverter
등록이 볼
<Image x:Name="DialogIcon" Source="{Binding DialogIconType, Converter={StaticResource DialogIconConverter}}"></Image>
을 : 그래서 나는 변경하기로 결정.
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
속성에 할당됩니다. 아래 그림과 같이 DialogIconType
는, 그것이 valueconverter없이 작동을 이미지 (예 : "이미지/DialogWindow/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"를 사용해 보셨습니까? –
@Jakob : 노력하지 않았습니다. –