gpt4 book ai didi

c# - "Two-way binding requires Path or XPath"编辑 wpf 数据网格时

转载 作者:太空狗 更新时间:2023-10-29 21:22:24 29 4
gpt4 key购买 nike

ContractListUserControl.XAML

<DataGrid AutoGenerateColumns="False"
ItemsSource="{Binding Path=ContractList}"
SelectedItem="{Binding Path=SelectedContract}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Person.LastName}" Header="Last Name" />
<DataGridTextColumn Binding="{Binding Path=Person.GivenName}" Header="Given Name" />
<DataGridTextColumn Binding="{Binding Path=ContractStart, StringFormat=dd/MM/yyyy, Mode=TwoWay}" Header="Contract Start" />
<DataGridTextColumn Binding="{Binding Path=ContractEnd, StringFormat=dd/MM/yyyy, Mode=TwoWay}" Header="Contract End" />
</DataGrid.Columns>
</DataGrid>

契约(Contract).cs

public class Contract
{
public DateTime ContractStart { get; set; }
public DateTime ContractEnd { get; set; }
public Person Person { get; set; }
}

Person.cs

public class Person
{
public string LastName { get; set; }
public string GivenName { get; set; }
}

ViewModel.cs

public class ContractListViewModel : INotifyPropertyChanged
{
private ObservableCollection<Contract> _contractList;
public ObservableCollection<Contract> ContractList
{
get { return _contractList; }
set { SetField(ref _contractList, value, () => ContractList); } // Same as OnPropertyChanged
}

private Contract _selectedContract;
public Contract SelectedContract
{
get { return _selectedCrew; }
set { SetField(ref _selectedCrew, value, () => SelectedCrew); }
}
}

如果我将数据网格设置为只读,它工作正常,问题是当我直接编辑 LastName 和 GivenName DataGrid 列时,它会崩溃,并抛出带有消息“双向绑定(bind)需要路径或 XPath”的 InvalidOperationException。但是,如果我只编辑 ContractStart 和 ContractEnd,它就可以正常工作。

我搜索了一些帮助,我想我和这个人遇到了同样的情况: DataGrid - "Two-way binding requires Path or XPath."

所以问题是 Person 属性为空,答案说我应该初始化绑定(bind)在 DataContext 中的对象,但没有说明如何去做。

最佳答案

要实现Person属性的初始化可以修改如下

public class Contract
{
public Contract()
{
Person = new Person();
}

public string RankName { get; set; }
public string RankShortName { get; set; }
public Person Person { get; set; }
}

添加一个构造函数并相应地初始化

关于c# - "Two-way binding requires Path or XPath"编辑 wpf 数据网格时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24258860/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com