wpf - 将 ComboBox 数据绑定(bind)到 DataGrid 中的 SelectedItem

标签 wpf mvvm datagrid

很长一段时间以来,我一直在寻找解决问题的方法,所以现在我将在这里发布一些代码!

我正在使用 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/

相关文章:

c# - 应用程序在调试中启动了100%,但在现实生活中却没有

c# - WPF 取消按钮

ios - 使用 ReactiveCocoa 从 View 模型更新 UITableViewCell

c# - 以 MVVM 安全方式将 WPF 元素(UserControl)移动到新窗口?

c# - 如何只显示一个结果表,即从对象数组列表绑定(bind)到数据网格的结果?

wpf - 绑定(bind)到 WPF DataGrid 中的选定项目

c# - WPF/数据网格 : Binding to different properties for displaying and editing

wpf - 如何在 mvvm 中重置 View 模型

WPF - 如何将其他控件传递到我的 UserControl 中?

android - 具有多个 View 的Room DataSource.Factory RecyclerView