在Windows Phone 8中访问联系人数据

时间:2013-12-18 00:33:35

标签: c# xaml data-binding windows-phone-8

我已经阅读了msdn文章“访问Windows Phone的联系人和日历数据”

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代码中)

我想在变量中输入电话号码,如Phone_no .How ????

1 个答案:

答案 0 :(得分:0)

不要绑定到默认的ContactPhoneNumber(不要使用名为PhoneNumbers的IEnumerable进行绑定)。

创建您自己的班级以保存电话号码数据

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

并创建这些自定义联系电话号码的新集合

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

然后在foreach循环中将数据从PhoneNumbers复制到MyContactPhoneNumber列表

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

然后将其绑定到UI

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而不是List,并在MyContactPhoneNumber类中实现INotifyPropertyChanged。