似乎无法加载datagrid wpf,您能帮忙吗?
由于某些原因,我似乎无法填充datagrid,因此出现以下错误: System.Windows.Data错误:40:BindingExpression路径错误:“在“对象”ObservableCollection“1”上找不到客户属性”(HashCode=11497055) 你能看出我做错了什么吗 代码如下:似乎无法加载datagrid wpf,您能帮忙吗?,wpf,Wpf,由于某些原因,我似乎无法填充datagrid,因此出现以下错误: System.Windows.Data错误:40:BindingExpression路径错误:“在“对象”ObservableCollection“1”上找不到客户属性”(HashCode=11497055) 你能看出我做错了什么吗 代码如下: ViewModel ============= public class CustomerVM : ViewModelBase {
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
)。错误消息确实泄露了它,但看不到我做错了什么。谢谢修复!!!!