找不到数据绑定属性,为什么

本文关键字:为什么 属性 数据绑定 找不到 | 更新日期: 2023-09-27 18:31:51

请帮助我,为什么这个绑定不起作用,我想从 PlayerBar.xaml 绑定,该数据上下文是 PlayerBarPresenter 到 PlayerBarPresenter.Card1.ImgCard 像这样 Source = Binding{Source Card1, Path = ImgCard} 比我得到这个异常

类型为"System.IO.FileNotFoundException"的第一次机会异常 发生在 mscorlib 中.dll System.Windows.Data 错误:BindingExpression 路径错误:"ImgCard"属性在"Card1"系统字符串"上找不到 (哈希代码=949723141)。BindingExpression: Path='ImgCard' DataItem='Card1' (hashCode=949723141);目标元素为 'System.Windows.Controls.Image' (Name='');目标属性为"源" (键入"系统.Windows.媒体.图像源")。

找到文件,如果只是在表格演示器

中的同一属性中出价,但我想在表格演示器中绑定.Card1.ImgCard

UserControl x:Class="poki.View.PlayerBar" 数据上下文是 TablePresenter

    <Image Width="50" Height="80" Source="{Binding Source=Card1, Path=ImgCard}" RenderTransformOrigin="0.5,0.5" Canvas.Left="108.358"
Canvas.Top="-8.349">

表演示者.cs

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using poki.View;
using System.Windows.Media.Imaging;
using poki.Model;
namespace poki.Presenters
{
    public class PlayerBarPresenter : PresenterBase<PlayerBar>
    {
        private BitmapImage playerImage;
        public BitmapImage PlayerImage
        {
            get { return playerImage; }
            set
            {
                playerImage = value;
                OnPropertyChanged("PlayerImage");
            }
        }
        private Card card1;
        public Card Card1
        {
            get { return card1; }
            set
            {
                card1 = value;
                OnPropertyChanged("Card1");
            }
        }

#endregion

        public PlayerBarPresenter(PlayerBar pb) : base(pb)
        {
            Card1 = new Card(22);
            Card1.S = "fasyom";           
        }
    }
}

表.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using poki.Presenters;
using System.Windows.Media.Imaging;
using poki.Model;
namespace poki.View
{
    public partial class Table : PhoneApplicationPage
    {
        public TablePresenter Presenter { get { return this.DataContext as TablePresenter; } }
        public Table()
        {
            this.Loaded += new RoutedEventHandler(Table_Loaded);
            InitializeComponent();
        }
        void Table_Loaded(object sender, RoutedEventArgs e)
        {
            DataContext = new TablePresenter(this); 
            PlayerBarPresenter a = new PlayerBarPresenter(new PlayerBar());

            //a.Card1.ImgCard = new BitmapImage(new Uri("/Datas/Images/1/7.png", UriKind.Relative));
            //a.Card2 = new BitmapImage(new Uri("/Datas/Images/1/7.png",UriKind.Relative));
            gridTable.Children.Add(a.View);
        }


    }
}

卡.cs

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Media.Imaging;
namespace poki.Model
{
    public class Card : Notifier
    {
        public int card { get; set; }
        public Card(int Card1)
        {
            card = Card1;
            ImgCard = new BitmapImage(new Uri("/Datas/Images/1/7.png", UriKind.Relative)); //new BitmapImage(new Uri("/Datas/Images/Cards/" + Suit + "/" + Rank + ".png",UriKind.Relative)); 
        }        
        public int Suit
        {
            get { return card / 13; }
        }
        public int Rank
        {
            get { return card % 13; }
        }

        private BitmapImage imgCard;
        public BitmapImage ImgCard
        {
            get { return imgCard; }
            set
            {
                imgCard = value;
                OnPropertyChanged("ImgCard");
            }
        }

    }
}

找不到数据绑定属性,为什么

认为你的绑定表达式是错误的,请尝试如下:

<Image Width="50" Height="80" Source="{Binding Card1.ImgCard}" RenderTransformOrigin="0.5,0.5" Canvas.Left="108.358" Canvas.Top="-8.349">

您将Source设置为字符串"Card1",当然它没有任何您期望的属性。由于卡在DataContext中,您将需要扩展PathPath=Card1.ImgCard),切勿在绑定到DataContext时设置任何源,或者将用于代替DataContext