【发布时间】:2017-06-21 06:34:16
【问题描述】:
我有一个包含五列的数据网格。第 1、2 和 3 列是用户可以输入的 TextColumns。第 4 和 5 列是 ComboBox:
<DataGrid x:Name="myTable" DataGridCell.Selected="grd_Cells_Selected" SelectionUnit="Cell" AutoGenerateColumns="False" ColumnWidth="*" Margin="5,0,0,0" Height="Auto" VerticalAlignment ="Center" HorizontalAlignment="Center" ItemsSource="{Binding mySourceCollection}">
<DataGrid.Resources>
<DataTemplate x:Key="myTemplate1" DataType="vm:GridItem" >
<ComboBox SelectedValue="{Binding something, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ItemsSource="{Binding sometging}" DisplayMemberPath="desc"/>
</DataTemplate>
<DataTemplate x:Key="myTemplate2" DataType="vm:GridItem">
<ComboBox x:Name="cboMY" SelectedValue="{Binding something, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="desc" ItemsSource="{Binding something}" IsSynchronizedWithCurrentItem="True"/>
</DataTemplate>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Header="H1" Binding="{Binding h1}" />
<DataGridTextColumn Header="H2" Binding="{Binding h2}" />
<DataGridTextColumn Header="H3" Binding="{Binding h3}" />
<DataGridTemplateColumn Header="Combo1" CellTemplate="{StaticResource myTemplate1}" CellEditingTemplate="{StaticResource myTemplate1}" />
<DataGridTemplateColumn Header="Combo2" CellTemplate="{StaticResource myTemplate2}" CellEditingTemplate="{StaticResource myTemplate2}" />
</DataGrid.Columns>
</DataGrid>
我用
DataGridCell.Selected="grd_Cells_Selected"
使用以下 CodeBehind 使单元格一键选中:
private void grd_Cells_Selected(object sender, RoutedEventArgs e) {
if (e.OriginalSource.GetType() == typeof(DataGridCell)) {
// Starts the Edit on the row;
DataGrid grd = (DataGrid)sender;
grd.BeginEdit(e);
}
}
这不适用于组合框。我必须单击两次才能打开 ComboBox。有没有办法一键打开ComboBox?
【问题讨论】:
标签: c# wpf xaml combobox datagrid