1:如图:
代码:
public partial class Window1 : Window { public Window1() { InitializeComponent(); Restaurant sp = new Restaurant() { Name = "sp", Address = "深圳", PhoneNumber = "1111" }; sss ss = new sss(); ss.Restaurant = sp; this.DataContext = ss; } public class sss : NotificationObject { private Restaurant restaurant; public Restaurant Restaurant { get { return restaurant; } set { restaurant = value; this.RaisePropertyChanged("Restaurent"); } } } }
Restaurant类:
public class Restaurant { public string Name { get; set; } public string Address { get; set; } public string PhoneNumber { get; set; } }
前台页面最终编译成一个类 并且和后后台是同一个类 。
同样的代码在其他的地方 为什么他的就可以?
如图:
代码:
后台也是
public MainWindow() { InitializeComponent(); this.DataContext = new MainWindowViewModel(); }
下面的Restaurant 类也是一样的 为什么我的就不能出来 很纳闷? 求解释 ?
你的Window的DataContext的值是ss,那么在绑定的时候,应该是使用ss的属性Restaurant,而不是变量名sp
如果需要绑定Name,那么路径是Restaurant.Name,而不是sp.Name
PS:别人可以是因为它的属性名称就是sp
朋友 安你的说法 只能是属性才能显示出来了?
像我这样也不行
Restaurant sp = new Restaurant()
{
Name = "sp",
Address = "深圳",
PhoneNumber = "1111"
};
this.DataContext = sp;
路劲是 sp.name
@s_p: 不一定是属性,能通过路径访问到的都可以,上面的路径是Name,只要改了绑定的路径,也是可以的
@诶碧司: 谢谢了 朋友 我后面通过调试查看理解了 ! 我开始总自认为是 在后台点出来 放到页面就行。
我的理解就是 页面和后台cs最终都编译成一个类 所以 页面访问cs的类 和属性 都是正常的
后面我在this.DataContext = sp; 查看 要sp下面的调试查看的属性(就是sp能看到的) 话可能有描述不清楚 不过你说 的一样 ‘ 能通过路径访问到的都可以 ’