我在CellEditingTemplate
的DataGrid中使用ComboBox。
我将所选项目插入到同一单元格中的文本块中,该单元格位于CellTemplate
中。只有当我移动到下一个单元格时才会发生插入。
我想要的是当我从ComboBox中选择项目时,它应该将它插入到TextBlock中 没有移动到下一个单元格。
这是我的xaml。
<DataGrid.Columns>
<DataGridTextColumn Header="Hours" Binding="{Binding time}" FontSize="14" FontWeight="Bold" IsReadOnly="True" Width="100"/>
<DataGridTemplateColumn Header="Monday" Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel >
<TextBlock x:Name="mon" Text="{Binding Path=SelectedSubject}"></TextBlock>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<!--<ComboBox x:Name="monday" Width="50" IsSynchronizedWithCurrentItem="true" Loaded="monday_Loaded" SelectionChanged="monday_SelectionChanged"></ComboBox>-->
<ComboBox x:Name="monday" Width="50" ItemsSource="{Binding Path=Subjects}" SelectedItem="{Binding Path=SelectedSubject}" IsSynchronizedWithCurrentItem="true" Loaded="monday_Loaded" SelectionChanged="monday_SelectionChanged"></ComboBox>
<ComboBox x:Name="staff" Width="50" Loaded="staff_Loaded"></ComboBox>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
有可能这样做吗?
如果有人知道怎么做,请帮助我。
答案 0 :(得分:3)
抱歉,我使用了上面的代码,但它没有给出完美的答案。 使用星期一组合框的鼠标离开事件并在该事件中提交编辑它将正常工作。 :)
private void monday_MouseLeave(object sender, MouseEventArgs e)
{
this.myGrid.CommitEdit();
}
答案 1 :(得分:0)
如果您为DataGrid
添加了名称,则可以从monday_SelectionChanged
访问该名称并提交修改:
<Grid x:Name="myGrid" ....>
在ComboBox选择的处理程序中更改了事件
private void monday_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
myGrid.CommitEdit();
// Rest of your implementation ....
}