【发布时间】:2014-01-08 15:41:03
【问题描述】:
如何在 wpf datagrid 中绑定(Itemssource 和 selected item)的组合框?我正在使用 MVVM 模式。 我试过了
<DataGridTemplateColumn Header="Example 9">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding PartIds, RelativeSource={RelativeSource AncestorType=Window}}" SelectedItem="{Binding PartId, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
和
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding MyCars}" HorizontalAlignment="Left">
<DataGrid.Columns>
<DataGridTextColumn Header="Model" Binding="{Binding Model}"/>
<DataGridTextColumn Header="Registration" Binding="{Binding Registration}"/>
<DataGridTemplateColumn Header="Example 12">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding CarParts, RelativeSource={RelativeSource AncestorType=Window}}" DisplayMemberPath="PartName" SelectedValuePath="PartID" SelectedValue="{Binding PartId, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Selected" Binding="{Binding PartId}"/>
</DataGrid.Columns>
</DataGrid>
用于数据绑定的属性
#region DataGrid List<String> Example
public ObservableCollection<MyCar> MyCars { get; set; }
public List<string> PartIds { get; set; }
#endregion
#region DataGrid List<Class> Example
public List<CarPart> CarParts { get; set; }
#endregion
参考: http://code.msdn.microsoft.com/windowsdesktop/Best-ComboBox-Tutorial-5cc27f82
【问题讨论】:
-
如何设置Window控件的DataContext?
-
公共部分类 MainWindow : Window { MainWindowViewModel vm = new MainWindowViewModel();公共 MainWindow() { this.DataContext = vm;初始化组件(); } }
标签: c# .net wpf data-binding combobox