【发布时间】:2011-10-25 14:32:43
【问题描述】:
我正在尝试获取 DataGridTextColumn 以仅允许大写。
显而易见的方法是将CharacterCasing 设置为Upper 用于EditingElementStyle TextBox。只要您在开始输入之前进入编辑模式,这就会很好,但是如果您在单元格不处于编辑模式时开始输入,那么TextBox 中输入的第一个字符是小写 (此后,当单元格已进入编辑模式,一切正常)。
我觉得这是一个错误,或者我是否假设将 CharacterCasing 设置为 Upper 应该可以解决问题?有人对此有修复或解决方法吗?
问题可以这样重现。只需将键盘焦点放在DataGrid 的第一个单元格中,然后按 a 而不先进入编辑模式。看起来像这样
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; }
}
【问题讨论】: