WPF TextChanged将光标放在第一个字母后面

时间:2014-04-07 13:45:38

标签: .net wpf wpf-controls

我有一个Infragistics网格,其中一个单元格具有以下EditorStyle(通过静态资源设置):

<Style x:Key="ProgramName_EditorStyle" TargetType="{x:Type igEditors:XamTextEditor}">
        <Setter Property="DataContext" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type igDP:CellValuePresenter}}, Path=DataContext}" />
        <Setter Property="Text" Value="{Binding DataItem.Name, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" />
        <EventSetter Event="TextChanged" Handler="TextChangedHandler"/>        
    </Style>

这是TextChangedHandler背后的代码:

void TextChangedHandler(object sender, RoutedPropertyChangedEventArgs<string> e)
        {
            var editor = sender as XamTextEditor;
            if (editor == null)
                return;

            var record = editor.DataContext as DataRecord;
            if (record == null)
                return;

            var list = record.DataPresenter.DataContext as MyProgramListViewModel;
            if (list == null)
                return;

            var data = record.DataItem as MyProgramSummaryViewModel;
            if (data == null)
                return;

            MyProgramSummaryViewModel toBeAdded = null;

            if (data.ReinsuranceSummary == null)
                toBeAdded =
                    MyProgramSummaryViewModel.Create(
                        new ProgramSummary { EnteredDate = DateTime.UtcNow, EditedDate = DateTime.UtcNow }, list);

            if (toBeAdded != null)
            {
                data.Summary = toBeAdded.Summary;
                data.Master = toBeAdded.Master;

            }
            data.Name = e.NewValue;
            Debug.Print(e.NewValue);

        }

当我开始在单元格中输入时会出现问题。 如果我想进入abc,我会得到bca。输入第一个字符后,光标将被设置回单元格的开头,使第一个字母最后。如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我认为您应该在TextChangedHandler

的末尾调用
e.Handled = true;