2013-12-18 3 views
1

Я прошел через статью MSDN «Доступ контакты и данные календаря для Windows Phone»Доступ контактные данные в Windows Phone 8

http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh286414(v=vs.105).aspx#BKMK_CreatingtheApplicationProject

<TextBlock Text="phone numbers" Margin="12,12,0,0"/> 
     <ListBox ItemsSource="{Binding Path=PhoneNumbers}" Height="60" Margin="36,0,0,0"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="*"/> 
         </Grid.ColumnDefinitions> 
         <TextBlock Grid.Column="0" Text="{Binding Path=Kind, Mode=OneWay}" /> 
         <TextBlock Grid.Column="1" Text=": " /> 
         <TextBlock x:Name="pno" Grid.Column="2" Text="{Binding Path=PhoneNumber, Mode=OneWay}" /> 
        </Grid> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 

В номер выше XAML телефона является динамическим привязанными к TextBlock Name = "pno" (Именован сам не в msdn-коде)

Я хочу получить номер телефона в переменной say Phone_no.

ответ

0

Не привязывайте к номеру ContactPhoneNumber по умолчанию (не используйте IEnumerable, называемый PhoneNumbers для привязки).

Создайте свой собственный класс для хранения телефонных номера данные

public class MyContactPhoneNumber 
{ 
    public PhoneNumber Phone_no {get; set;} 
    //other properties you want 
} 

и создать новую коллекцию этих пользовательских контактных телефонов

List<MyContactPhoneNumber> myNumbers = new List<MyContactPhoneNumber>(); 

Затем в качестве копировального цикла Еогеаспа данных из номера телефонов в список MyContactPhoneNumber

foreach (var number in PhoneNumbers) 
    myNumbers.Add(new MyContactPhoneNumber 
     { 
      //...copy all properties here, for example Phone_no = number.PhoneNumber 
     }); 

А затем привяжите его к пользовательскому интерфейсу

ListOfNumbers.ItemsSource = myNumbers; 


// and in XAML 

<ListBox Name="ListOfNumbers" Height="60" Margin="36,0,0,0"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock x:Name="pno" Text="{Binding Path=Phone_no, Mode=OneWay}" /> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

Если вы хотите два способа связывания поддержки и лучше привязки поддержки в целом, использовать ObservableCollection вместо списка и реализовать INotifyPropertyChanged в классе MyContactPhoneNumber.