请帮助我,为什么这个绑定不起作用,我想从PlayerBar.xaml绑定哪个datacontext是PlayerBarPresenter到PlayerBarPresenter.Card1.ImgCard就像这个Source = Binding {Source Card1,Path = ImgCard}比我得到这个例外
类型'System.IO.FileNotFoundException'的第一次机会异常 发生在mscorlib.dll System.Windows.Data错误:BindingExpression 路径错误:'Card1''System.String'找不到'ImgCard'属性 (的HashCode = 949723141)。 BindingExpression:Path ='ImgCard' DataItem ='Card1'(HashCode = 949723141);目标元素是 'System.Windows.Controls.Image'(Name ='');目标属性是'来源' (输入'System.Windows.Media.ImageSource')..
找到文件如果只是在TablePresenter中同一个属性,但我想在TablePresenter.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">
TablePresenter.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";
}
}
}
table.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);
}
}
}
card.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");
}
}
}
}
答案 0 :(得分:5)
认为您的绑定表达式错误,请尝试这样:
<Image Width="50" Height="80" Source="{Binding Card1.ImgCard}" RenderTransformOrigin="0.5,0.5" Canvas.Left="108.358" Canvas.Top="-8.349">
答案 1 :(得分:0)
您将Source
设置为字符串"Card1"
,当然它没有您期望的任何属性。由于卡位于DataContext
,您需要扩展Path
(Path=Card1.ImgCard
),因此在绑定到DataContext
时不会设置任何来源,或者将使用而不是DataContext
。