C# WPF MVVM DataGrid ComboxColumn绑定到我的模型中的列表
我目前正在使用MVVM进行一个WPF项目 我有一个C# WPF MVVM DataGrid ComboxColumn绑定到我的模型中的列表,c#,wpf,datagrid,datagridcomboboxcolumn,C#,Wpf,Datagrid,Datagridcomboboxcolumn,我目前正在使用MVVM进行一个WPF项目 我有一个DataGrid绑定到一个ObservableCollection模型,如下所示: class Model : INotifyPropertyChanged { private string m_Name; public string Name { get { return m_Name; } set {
DataGrid
绑定到一个ObservableCollection
模型,如下所示:
class Model : INotifyPropertyChanged
{
private string m_Name;
public string Name
{
get
{
return m_Name;
}
set
{
m_Name = value;
OnPropertyChanged("Name");
}
}
private List<string> m_Names;
public List<string> Names
{
get
{
return m_Names;
}
set
{
m_Names = value;
OnPropertyChanged("Names");
}
}
private double? m_Value;
public double? Value
{
get
{
return m_Value;
}
set
{
m_Value = value;
OnPropertyChanged("Value");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
类模型:INotifyPropertyChanged
{
私有字符串m_Name;
公共字符串名
{
得到
{
返回m_名称;
}
设置
{
m_Name=值;
不动产变更(“名称”);
}
}
私人名单;
公开名单名称
{
得到
{
返回m_名称;
}
设置
{
m_name=值;
关于财产变更(“名称”);
}
}
私人双m_值;
公共双重价值
{
得到
{
返回m_值;
}
设置
{
m_值=值;
不动产变更(“价值”);
}
}
公共事件属性更改事件处理程序属性更改;
私有void OnPropertyChanged([CallerMemberName]字符串propertyName=null)
{
if(PropertyChanged!=null)
{
PropertyChanged(这是新的PropertyChangedEventArgs(propertyName));
}
}
现在我想使用一个datagridcomboxcolumn
来创建一个组合框,其中我的属性“Name”作为SelectedItem,Name作为ItemSource
我的每个模型都有自己的一组名称,这些名称与任何其他模型的名称都不相同
我用谷歌搜索并查看了StackOverflow,但没有找到任何解决方案。我还尝试应用过滤器,就像我所知道的DevExpress网格控件一样,但我没有找到任何适用于基本WPF数据网格的方法
如何将我的
DataGridComboxColumn
绑定到我的模型中的属性列表
?如果使用DataGridComboxColumn,则必须向ItemsSource提供静态资源,这在“备注”部分中有说明
因为每个视图模型有不同的“名称”,所以可以使用DataGridTemplateColumn而不是DataGridComboxColumn
<DataGridTemplateColumn Header="Name">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Names}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
您尝试了什么?如果将
DataGrid
的ItemsSource
属性设置或绑定到IEnumerable
,则这应该可以工作:
<DataGridComboBoxColumn ItemsSource="{Binding Names}" SelectedItemBinding="{Binding Name}" />
有关更多建议,请参阅TechNet文章。谢谢。这就是我要找的。