我有一个要显示电话号码的DataGridTextColumn。我允许用户在“列”中键入内容,自然地,他们将需要输入以0开头的数字。

但是,每当用户键入0时,该列都会将其删除,因此它只是一个不带0的电话号码。

c# - WPF DataGridColumn不接受0-LMLPHP

所有这些电话号码都有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/

10-10 12:43