Wpf 绑定到datagrid将键盘输入限制为单个字符

Wpf 绑定到datagrid将键盘输入限制为单个字符,wpf,binding,datagrid,Wpf,Binding,Datagrid,我在WPFDataGrid中遇到了一个问题,我无法真正解释/解决这个问题 当我想在单元格中键入一些值时,我只“允许”键入一个字符,然后DataGrid单元格失去焦点,整行被选中 当我从下面的代码中删除DataGridTextColumn中的数据绑定时,我可以“解决”这个问题 <DataGrid x:Name="dataGrid1" ItemsSource="{Binding Items,UpdateSourceTrigger=PropertyChanged,Mode=OneWay}" Ho

我在WPF
DataGrid
中遇到了一个问题,我无法真正解释/解决这个问题

当我想在单元格中键入一些值时,我只“允许”键入一个字符,然后
DataGrid
单元格失去焦点,整行被选中

当我从下面的代码中删除
DataGridTextColumn
中的数据绑定时,我可以“解决”这个问题

<DataGrid x:Name="dataGrid1" ItemsSource="{Binding Items,UpdateSourceTrigger=PropertyChanged,Mode=OneWay}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" CanUserAddRows="True" CanUserDeleteRows="True" AutoGenerateColumns="False" Height="auto" Width="auto" Margin="2,0,0,0">
    <i:Interaction.Triggers>
          <i:EventTrigger EventName="SelectionChanged">
                <cmd:EventToCommand Command="{Binding  SelectionChangedCommand,Mode=OneWay}" CommandParameter="{Binding SelectedItems}">
                </cmd:EventToCommand>
           </i:EventTrigger>
     </i:Interaction.Triggers>
      <DataGrid.Columns>
      <DataGridTextColumn Header="SampleHeader" Binding="{Binding Path=SampleText, UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" Width="auto"></DataGridTextColumn>
   </DataGrid.Columns>
</DataGrid>

如果你能精确预测预期的行为,这会有所帮助

我的意思是,好吧,你想键入一些字符,然后在文本列失去焦点时触发一个事件?如果是,DataGridTextColumn中UpdateSourceTrigger=PropertyChanged的目的是什么

正如这里所解释的,您可以在每次键入角色或焦点丢失时触发事件(这是默认行为):


因此,第一个问题是为什么每次键入字符时都需要通过DataGridTextColumn引发事件?我假设在您的情况下,管理此更改的代码会引发其他问题(另一个propertyChanged、selectionChanged、一个命令或任何东西),这应该可以解释为什么您的文本框失去焦点。

无关:
UpdateSourceTrigger
单向
绑定中无效。删除该选项。很抱歉回答得太晚。我目前对datagrid的这种行为真的很奇怪。它与命令和/或焦点丢失事件无关。我只有一些绑定(只是为了从数据库中获取一些数据)带有对datagridtextcolumns的observablecollection。问题是我只能在一个单元格中键入/更改一个字符,然后被“抛出”单元格,焦点丢失。哦,我找到了邪恶的根源。我正在使用此帖子中的TrulyObservableCollection:。这导致网格视图出现问题。奇怪的谢谢你的时间