C#学习教程:Silverlight中的动态图片源绑定这是XAML文件:......如果我覆盖ChildWindow的Show方法并设置图像的来源,它工作正常:publicnewvoidShow(){DialogIcon.Source=newBitmapImage(newUri(@"/图片/DialogWindow/Confirm.png",UriKind.Relative));base.Show();但它看起来很丑,而不是“silverlight方式”,所以我决定改变:你看我注册了一个DialogIconConverter来绑定DataContext的源代码。publicclassDialogIconConverter:IValueConverter{publicobjectConvert(objectvalue,TypetargetType,objectparameter,CultureInfoculture){//当前它是一个硬编码路径returnnewBitmapImage(newUri(@"/Images/DialogWindow/Confirm.png",UriKind.Relative));}...}但它现在不起作用,我在这个控件中还有其他几个转换器可以正常工作。只有这个不行。能帮忙看看是什么问题吗?编辑:DialogIconType是一个枚举,它也是DialogContext的一个属性。DialogContext的实例将分配给DialogWindowDataContext属性。publicenumDialogIconType{Confirm,Alert,Error}publicclassDialogContext{publicstringTitle{get;放;}公共字符串内容{得到;放;}publicDialogBu??ttons按钮{get;放;}publicDialogIconTypeIconType{get;放;}}内部DialogWindow(DialogContext上下文){InitializeComponent();this.DataContext=上下文;可能很傻,但你确定你的转换器在你的xaml文件中被正确引用了吗?否则,我建议尝试将此语法作为URI的路径(将图像设置为资源):returnnewBitmapImage(newUri("pack://application:,,,/Images/DialogWindow/Confirm.png",UriKind。相对的));编辑:好的,我想我明白了:看看你的输出窗口,你可能会看到一些错误40绑定......blablabla......我的猜测是转换器是正确的,但绑定的来源不,所以基本上甚至没有使用转换器。原因是您的DialogIconType不是依赖属性,因此无法绑定。换句话说,这个:publicDialogIconTypeIconType{get;放;}应该变成这样:publicstaticDependencyPropertyIconTypeProperty=DependencyProperty.Register("IconType",typeof(DialogIconType),typeof(DialogContext));publicDialogIconTypeIconType{get{return(DialogIconType)(GetValue(IconTypeProperty));}set{SetValue(IconTypeProperty,value);此外,在你的Xaml中,你应该绑定到“IconType”,而不是“DialogIconType”(这是一种类型而不是属性)(这甚至可能是唯一的问题,因为我不确定是否真的需要dependencyProperty在这里,现在我考虑一下)假设DialogIconType是图像的路径(例如“Images/DialogWindow/Confirm.png”),它应该没有值转换器,如下所示:编辑:也可以返回路径从valueconverter的Convert方法转换为图像-即:publicobjectConvert(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture){return"Images/DialogWindow/Confirm.png";}编辑2:以下也适用于UriKind.Relative:以上就是C#学习教程的全部内容:Silverlight中的动态图片源绑定,如果对大家有用还需要了解更多关于C#学习教程,我希望大家多多关注——publicobjectConvert(objectvalue,TypetargetType,objectparamet呃,System.Globalization.CultureInfoculture){returnnewBitmapImage(newUri("Images/DialogWindow/Confirm.png",UriKind.Relative));}本文收集自网络,不代表立场。如涉及侵权,请点击维权联系管理员删除,如有转载请注明出处:
