2016-04-18 41 views
1

我有一个DataGridTextColumn,我想显示在我允许用户键入列,自然他们将需要输入一个号码与0WPF的DataGridColumn不接受0

开头的电话号码但是,每当用户键入0时,列将其删除,因此它只是一个没有0的电话号码。

enter image description here

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

你能展示你的XAML吗?或者你是否在代码背后做这个? – MikeT

+0

@MikeT Hi迈克,我已经添加了我的'XAML' – CBreeze

+0

并且只是为了确认PhoneNumber是一个字符串字段? – MikeT

回答

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变量中。