很长一段时间以来,我一直在寻找解决问题的方法,所以现在我将在这里发布一些代码!
我正在使用 MVVM 处理我的应用程序中的数据,问题涉及以下两个 ViewModel 类
public class vmProject : vmBase
{
private Project project;
public User Owner
{
get { return project.Owner; }
set {project.Owner = value; OnPropertyChanged("Owner"); }
}
public vmProject(Project project)
{
this.project = project;
}
}
public class User
{
public int Id { get; set; }
public string ShortName { get; set; }
public string FullName { get; set; }
}
我将所有项目加载到 ObservableCollection 中,并将所有用户加载到 ObservableCollection 中。
现在我想在 DataGrid 中显示所有项目,其中包含显示用户 ShortName 的 ComboBox。数据网格还应该有一个文本列,用于显示所有者的全名。
我的问题是,我不知道应该使用 DataGridComboBoxColumn 还是 DataGridTemplateColumn。以及如何在它们中的每一个中使用数据绑定(bind)......
当用户在组合框中选择新所有者时,应更新模型以及 FullName 列。
有什么解决办法吗?
最佳答案
我不是 MVVM peron,但如果没有 MVVM,我会这样做。不要认为您需要 UsersFiltered 和 ObservableCollection。如果 UsersAll 是一个 Observable 集合,它会在您选择新名称时选择新行。
bind the grid to a filtered list
public List<User> UsersFiltered
{
get
{
return UsersAll.Where(usr => user = SelectedCBUser).ToList();
}
{
关于wpf - 将 ComboBox 数据绑定(bind)到 DataGrid 中的 SelectedItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8217224/