Я пытаюсь получить DataGridTextColumn
, чтобы разрешить только верхний корпус.
Очевидным подходом было бы установить CharacterCasing
в Upper
для EditingElementStyle
TextBox
. Это прекрасно работает до тех пор, пока вы входите в режим редактирования до начала ввода, но если вы начнете печатать, когда ячейка не находится в режиме редактирования, тогда первый символ, введенный в TextBox
, будет строчным (после этого, когда ячейка перешла в режим редактирования, все работает как положено).
У меня такое ощущение, что это ошибка, или я что-то упустил, предполагая, что установка CharacterCasing
на Upper
должна помочь? У кого-нибудь есть решение или обходной путь для этого?
Проблема может быть воспроизведена следующим образом. Просто поместите фокус клавиатуры в первую ячейку в DataGrid
и нажмите a , не входя в режим редактирования первым. Похоже на это
![enter image description here](https://i.stack.imgur.com/Lxv59.png)
MainWindow.xaml
<DataGrid ItemsSource="{Binding MyList}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Test Character Casing"
Binding="{Binding Name}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="CharacterCasing" Value="Upper"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
MainWindow.xaml.cs
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
MyList = new List<MyItem>();
MyList.Add(new MyItem { Name = "" });
MyList.Add(new MyItem { Name = "" });
this.DataContext = this;
}
public List<MyItem> MyList { get; set; }
}
public class MyItem
{
public string Name { get; set; }
}