.net – ‘System.Windows.Data.Binding’类型的对象无法转换为
我想知道是否有人可以帮忙.我现在已经半天不停地反对这个问题了,我一定是做错了.我有一个具有许多依赖项属性的自定义控件.
[TemplatePart(Name = InformationBubble.InformationBubbleTitlePart,Type = typeof(TextBlock))] [TemplatePart(Name = InformationBubble.InformationBubbleProductImagePart,Type=typeof(Image))] public class InformationBubble : Control { #region Template Parts Name Constants /// <summary> /// Name constant for the Information Bubble Title Part /// </summary> public const string InformationBubbleTitlePart = "InformationBubbleTitleText"; /// <summary> /// Name constant for the Information Bubble Product Image Part /// </summary> public const string InformationBubbleProductImagePart = "InformationBubbleProductImage"; #endregion #region TemplateParts private TextBlock _Title; internal TextBlock Title { get { return _Title; } private set { _Title = value; if (_Title != null) { _Title.Text = this.ProductTitleText; } } } private Image _ProductImage; internal Image ProductImage { get { return _ProductImage; } private set { _ProductImage = value; if (_ProductImage != null) { _ProductImage.Source = this.ProductImageSource; } } } #endregion #region Public String Product Title // Dependency properties declaration public static readonly DependencyProperty ProductTitleProperty = DependencyProperty.Register( "ProductTitle",typeof(string),typeof(InformationBubble),new PropertyMetadata(string.Empty,new PropertyChangedCallback(OnProductTitleChanged))); public static void OnProductTitleChanged(DependencyObject sender,DependencyPropertyChangedEventArgs e) { InformationBubble iBubble = sender as InformationBubble; if (iBubble.Title != null) { iBubble.Title.Text = e.NewValue as string; } } public string ProductTitleText { get { return GetValue(ProductTitleProperty) as string; } set { SetValue(ProductTitleProperty,value); } } #endregion #region Public Image Source Product Image public static readonly DependencyProperty ProductImageSourceProperty = DependencyProperty.Register( "ProductImageSource",typeof(ImageSource),new PropertyMetadata(null,new PropertyChangedCallback(OnProductImageSourceChanged))); public static void OnProductImageSourceChanged(DependencyObject sender,DependencyPropertyChangedEventArgs e) { InformationBubble iBubble = sender as InformationBubble; if (iBubble.ProductImage != null) { iBubble.ProductImage.Source = e.NewValue as ImageSource; } } public ImageSource ProductImageSource { get { return GetValue(ProductImageSourceProperty) as ImageSource; } set { SetValue(ProductImageSourceProperty,value); } } #endregion public InformationBubble() { this.DefaultStyleKey = typeof(InformationBubble); } #region Overrides public override void OnApplyTemplate() { base.OnApplyTemplate(); Title = GetTemplateChild(InformationBubble.InformationBubbleTitlePart) as TextBlock; ProductImage = GetTemplateChild(InformationBubble.InformationBubbleProductImagePart) as Image; } #endregion #region Private Methods private void GoToState(string stateName,bool useTransitions) { VisualStateManager.GoToState(this,stateName,useTransitions); } #endregion } 现在,如果我在我的xaml中的某个地方使用此控件,那么如果我执行此操作: <controls:InformationBubble ProductImageSource="{Binding SelectedItem.NormalImageSource}" ProductTitleText="Test Title" "/> 但是,如果我尝试将数据绑定到ViewModel中的SelectedItem对象的title属性的数据: <controls:InformationBubble ProductImageSource="{Binding SelectedItem.NormalImageSource}" ProductTitleText="{Binding SelectedItem.Title,Mode=TwoWay" "/> 我得到’System.Windows.Data.Binding’类型的对象不能转换为’System.String’类型. TextBlock的text属性是DependencyProperty,所??以我必须在这里遗漏一些明显的东西. 非常感谢任何帮助或见解. 短剑的一种 解决方法
可能是该物业的名称是错误的.下面代码中的“ProductTitle”应该是“ProductTitleText”吗?
public static readonly DependencyProperty ProductTitleProperty = DependencyProperty.Register( "ProductTitle",// "ProductTitleText" ? typeof(string),new PropertyChangedCallback(OnProductTitleChanged))); 我想当你使用字符串常量时,WPF使用反射直接访问属性“public string ProductTitleText”. DependencyProperty被忽略,因为属性的名称不匹配(“ProductTitle”与“ProductTitleText”). 因此,对于标题,您有一个名为“ProductTitle”的依赖项属性和一个名为“ProductTitleText”的(字符串)属性. 是否有意义? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在给定.SPC文件的情况下签署Windows应用程序?
- windows – PgAdmin4无法查询或查看数据
- windows-8 – WinJS.xhr本地网络错误
- 在Windows上创建Python 3.3.4和virtualenv:ImportError:没
- Windows 下配置 Logstash 为后台服务
- 无法从Windows Mono C#Project访问Linux gcc编译的.so共享库
- windows – 从MSI文件中检索公共属性
- 如何在Windows共享中识别未使用的文件?
- windows-server-2008 – 什么是“很多”页面错误?
- 你可以在新的Windows 10(Ubuntu)bash用户空间本地运行Docke
- Windows Server 2016-WinSer2016 Active Directo
- windows – MS.Internal.XcpImports.MethodEx(In
- windows – Cygwin中的Python 3.x?
- Windows Azure与传统Windows主机有什么区别?
- WPF:从Window继承
- windows-server-2008 – 是否有预部署Windows工作
- winrt-xaml – 禁用时更改Button的样式(IsEnable
- windows-server-2008 – 在Windows Server 2008
- 如何在wix中进行重大升级时停止并且不卸载Window
- 用于Windows的python os.mkfifo()