【发布时间】:2017-02-08 19:12:07
【问题描述】:
如何将具有两列(DataGridTextColumn 和 DataGridComboBoxColumn)的 Datagrid 绑定到 ObservableCollection<Team> Teams?
DataGridTextColumn 绑定正确。但DataGridComboBoxColumn 中没有显示任何内容。
代码隐藏
public class Team
{
public string Name { get; set; }
public List<string> Members { get; set; }
}
public class ViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private ObservableCollection<Team> teams = new ObservableCollection<Team>
{
new Team()
{
Name = "A", Members = new List<string> {"John", "Jack"},
},
new Team()
{
Name = "B", Members = new List<string> {"Sarah", "Anna"},
}
};
public ObservableCollection<Team> Teams
{
get { return teams; }
set
{
teams = value;
RaisePropertyChanged("Teams");
}
}
private void RaisePropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler == null) return;
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
XAML
<DataGrid ItemsSource="{Binding Path=Teams}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Team"
IsReadOnly="True"
Width="*"
Binding="{Binding Name}"/>
<DataGridComboBoxColumn Header="Members"
Width="*"
/>
</DataGrid.Columns>
</DataGrid>
【问题讨论】:
-
你有视图集的DataContext吗?否则它看起来很好。
-
@StephenWilson 是的,我已经设置好了。
标签: c# wpf data-binding datagrid datacontext