У меня есть AutoCompleteBox
как DataGrid
Тип столбца. Например:Как преобразовать wpf AutoCompleteBox ко всем вводам верхнего регистра
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Thing, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<SLToolkit:AutoCompleteBox Text="{Binding Path=Thing,
UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
Однако я хочу ограничить ввод пользователя в верхнем регистре. На TextBoxes
Я могу сделать это следующим образом, но я не могу получить это для работы с AutoCompleteBoxes
.
<DataGridTextColumn Binding="{Binding UpdateSourceTrigger=PropertyChanged, Path=Thing}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="CharacterCasing" Value="Upper" />
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
Я попытался это:
<SLToolkit:AutoCompleteBox Text="{Binding Path=Thing,
UpdateSourceTrigger=PropertyChanged}"
TextChanged="AutoComplete_TextChanged" />
С этим:
private void AutoComplete_TextChanged(object sender, RoutedEventArgs e)
{
AutoCompleteBox box = sender as AutoCompleteBox;
if (box == null) return;
box.Text = box.Text.ToUpper();
}
Такого рода работ кроме того, что он пишет в обратном направлении. Когда пользователь вводит символ, курсор возвращается к началу окна, поэтому следующее слово находится перед предыдущим. Если бы я написал «пример», я бы увидел «ELPMAXE».
Любые идеи?