WPF DataGridColumn不接受0

时间:2016-04-18 09:03:11

标签: c# wpf xaml user-interface datagrid

我有一个DataGridTextColumn我要显示一个电话号码。我允许用户输入列,当然他们需要输入一个以0开头的数字。

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

enter image description here

所有这些电话号码都有0,但您可以看到它们已被DataGrid删除。如何在我的DataGridColumn中保留0?

编辑: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>

1 个答案:

答案 0 :(得分:3)

最好将电话号码存储到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变量中。