似乎无法加载datagrid wpf,您能帮忙吗?

似乎无法加载datagrid wpf,您能帮忙吗?,wpf,Wpf,由于某些原因,我似乎无法填充datagrid,因此出现以下错误: System.Windows.Data错误:40:BindingExpression路径错误:“在“对象”ObservableCollection“1”上找不到客户属性”(HashCode=11497055) 你能看出我做错了什么吗 代码如下: ViewModel ============= public class CustomerVM : ViewModelBase {

由于某些原因,我似乎无法填充datagrid,因此出现以下错误:

System.Windows.Data错误:40:BindingExpression路径错误:“在“对象”ObservableCollection“1”上找不到客户属性”(HashCode=11497055)

你能看出我做错了什么吗

代码如下:

    ViewModel
    =============
        public class CustomerVM : ViewModelBase
        {
            private ObservableCollection<Customer> _customers;          
            public ObservableCollection<Customer> Customers
            {
                get { return _customers; }
                set
                {
                    _customers = value;
                    OnPropertyChanged("Customers");
                }
            }   

            private DelegateCommand _getCustomersCommand;
            public ICommand GetCustomersCommand
            {
                get
                {
                    return _getCustomersCommand ?? (_getCustomersCommand = new DelegateCommand(x => GetCustomers(), x => CanGetCustomer));
                }
            }
            private static bool CanGetCustomer
            {
                get { return true; }
            }
            private void GetCustomers()
            {
                Customers = new ObservableCollection<Customer>
                           {
                               new Customer{Id=1,Name ="Jo",Surname = "Bloggs",IsMember = true},
                               new Customer{Id=2,Name ="Mark", Surname = "Cole",IsMember = false},
                               new Customer{Id=3,Name ="Robert ", Surname = "Smith",IsMember = true},
                               new Customer{Id=4,Name ="Vincent", Surname = "Varc",IsMember = false},
                           };
            }
        }    


          Customer Wpf Window
          ====================
          <Window x:Class="Sample.CustomerDataGridSample"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
            Title="CustomerDataGridSample" Height="300" Width="300" Loaded="OnWindowsLoaded" WindowStartupLocation="CenterScreen">

        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <TextBlock Text="Customers"
                       Grid.ColumnSpan="2"
                       FontWeight="Bold"
                       FontSize="12"/>
            <toolkit:DataGrid x:Name="dg" Grid.Row="1"
                               ItemsSource="{Binding Customers}"                            
                               CanUserAddRows="False" 
                               CanUserDeleteRows="False"
                               CanUserResizeRows="False" 
                               CanUserSortColumns="False"
                               AutoGenerateColumns="False"
                               RowHeaderWidth="17" RowHeight="25">
                <toolkit:DataGrid.Columns>
                    <toolkit:DataGridTextColumn   Header="Name"
                                              Binding="{Binding Path=Name}" />
                    <toolkit:DataGridTextColumn   Header="Surname"
                                              Binding="{Binding Path=Surname}" />
                    <toolkit:DataGridTextColumn   Header="Is Member"
                                              Binding="{Binding Path=IsMember}" />
                </toolkit:DataGrid.Columns>
            </toolkit:DataGrid>
        </Grid>
    </Window>

     public partial class CustomerDataGridSample:Window
    {
        public CustomerDataGridSample()
        {
            InitializeComponent();
        }
        private void OnWindowsLoaded(object sender, RoutedEventArgs e)
        {
            var customerVm = new CustomerVM();
            customerVm.GetCustomersCommand.Execute(null);
            DataContext = customerVm.Customers;
        }
    }
ViewModel
=============
公共类CustomerVM:ViewModelBase
{
私人可观测收集客户;
公开收集客户
{
获取{return\u customers;}
设置
{
_顾客=价值;
不动产变更(“客户”);
}
}   
私有DelegateCommand_getCustomerCommand;
公共ICommand getCustomerCommand
{
得到
{
返回_getCustomerCommand??(_getCustomerCommand=newdelegateCommand(x=>GetCustomers(),x=>CanGetCustomer));
}
}
私有静态bool-CanGetCustomer
{
获取{return true;}
}
私人客户()
{
客户=新的可观察收集
{
新客户{Id=1,Name=“Jo”,Name=“Bloggs”,IsMember=true},
新客户{Id=2,Name=“Mark”,Name=“Cole”,IsMember=false},
新客户{Id=3,Name=“Robert”,姓氏=“Smith”,IsMember=true},
新客户{Id=4,Name=“Vincent”,姓氏=“Varc”,IsMember=false},
};
}
}    
客户Wpf窗口
====================
公共部分类CustomerDataGridSample:窗口
{
公共CustomerDataGridSample()
{
初始化组件();
}
WindowsLoaded上的私有void(对象发送方,RoutedEventArgs e)
{
var customerVm=新customerVm();
customerVm.getCustomerCommand.Execute(null);
DataContext=customerVm.Customers;
}
}

仅错误消息就泄露了它-您的绑定具有错误的上下文

您正在加载方法中将窗口的
DataContext
设置为
customerVm.Customers
。这意味着您的绑定已经从
Customers
属性“开始”,因此网格上的绑定实际上正在尝试查找
customerVm.Customers.Customers
。这就是为什么您会收到这样的错误消息:
observeablecollection
没有
Customers
属性


您可以更改它,使代码中设置的
DataContext
只是
customerVm
,或者在DataGrid上使用
ItemsSource={Binding}
(然后它将只拾取当前的
DataContext
)。

错误消息确实泄露了它,但看不到我做错了什么。谢谢修复!!!!