0

我遇到了 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>
4

1 回答 1

1

如果您精确预期的行为,这将有所帮助。

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

正如这里所解释的,您可以在每次键入字符时触发一个事件,或者在焦点丢失时触发一个事件(这是默认行为):输入文本时立即触发 TextBox.TextChanged

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

于 2013-06-05T06:54:46.320 回答