2013-06-04 2 views
0

У меня проблема с WPF DataGrid, который я не могу объяснить/решить.Связывание с 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> 
+0

Несвязанный: 'UpdateSourceTrigger' бесполезен в привязках' OneWay'. Удалите это. –

ответ

1

Это поможет, если вы точно определяете ожидаемое поведение.

Я имею в виду, что вы хотели бы набрать некоторые символы, а затем запустить событие, когда столбец текста потерял фокус? Если да, то какова цель UpdateSourceTrigger = PropertyChanged в DataGridTextColumn?

Как объяснить здесь, вы могли бы активироваться событие каждый раз, когда вы печатаете символ, или на фокус теряется (что является поведением по умолчанию): Fire TextBox.TextChanged immediately when text is typed in

Таким образом, первый вопрос, почему вы должны поднять событие, DataGridTextColumn каждый раз, когда вы вводите символ? Я полагаю, в вашем случае, что код, управляющий этим изменением, поднимет что-то еще (другое свойствоChanged, selectionChanged, команда или что-то еще), которое должно объяснить, почему ваш текстовый тег потерял фокус.

+0

Извините за поздний ответ. Такое поведение, которое я в настоящее время имеет с datagrid, действительно weird.it не имеет ничего общего с командами и/или фокусом потерянного события. У меня есть только некоторые привязки (только для получения данных из db) с наблюдаемым отображением в datagridtextcolumns. Проблема в том, что я могу только вводить/изменять один символ в ячейке и «выкидываться» из ячейки, фокус теряется. – nukleos

+0

О, я нашел источник зла. Я использую TrulyObservableCollection из этого сообщения: http://stackoverflow.com/questions/1427471/observablecollection-not-noticing-when-item-in-it-changes-even-with-inotifyprop. что вызвало проблему с сеткой. странно. Спасибо за ваше время – nukleos

Смежные вопросы