私は5列のデータグリッドを持っています。カラム1、2及び3は、列4ユーザが入力することができTextColumnsであり、図5は、コンボボックスである:DataGrid 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を使用して、1回のクリックでセルを選択します。
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を開くために2回クリックする必要があります。ワンクリックでコンボボックスを開く方法はありますか?
それを取得しないでください。 DataGridViewタグを使用せず、XAMLでEditModeを使用するオプションはありません –