我有一个要显示电话号码的DataGridTextColumn
。我允许用户在“列”中键入内容,自然地,他们将需要输入以0开头的数字。
但是,每当用户键入0时,该列都会将其删除,因此它只是一个不带0的电话号码。
所有这些电话号码都有0,但是您可以看到它们已被DataGrid
删除。如何将0保留在DataGridColumn
中?
编辑:xaml
<DataGrid Grid.Row="1" x:Name="companyDataGrid" FontSize="14" CanUserAddRows="True" AutoGenerateColumns="False" HeadersVisibility="Column"
EnableRowVirtualization="True" RowEditEnding="OnSubcontractorDataGridRowEditEnding" SelectionChanged="OnSubcontractorGridSelectionChanged">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Width="*" Binding="{Binding Name, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTextColumn Header="Package" Width="*" Binding="{Binding Package, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTextColumn Header="Telephone" Width="*" Binding="{Binding PhoneNumber, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTextColumn Header="Email" Width="*" Binding="{Binding Email, UpdateSourceTrigger=PropertyChanged}"/>
</DataGrid.Columns>
</DataGrid>
最佳答案
最好将电话号码存储为string
类型,而不是integer
类型,以节省前导零。
C#自动删除int
值中的前导零。您可以对其进行测试:
string value = "01";
int i = int.Parse(value);
//Debugger says i=1 cause it is integer
如果将数字存储在字符串中,则结果为:
string str = string.Format("{0:(000) 000-0000 x 000}",
double.Parse("0234567890123"));
将产生“((023)456-7890 x 123”
因此,如果要在电话号码中保持前导零,则应将其存储在
string
变量中。关于c# - WPF DataGridColumn不接受0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36689611/