Как добавить проверенный контакт в список Windows Phone 8?

1

Я пытаюсь добавить контакты в список, как мой код,

 <!--ContentPanel - place additional content here-->
        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <StackPanel Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0,0,0,10">
                <TextBlock x:Name="ContactResultsLabel" Text="results are loading..." Style="{StaticResource PhoneTextLargeStyle}" TextWrapping="Wrap"></TextBlock>
                <ListBox x:Name="ContactResultsData" ItemsSource="{Binding listOfContacts}" Height="293" Margin="24,0,0,0">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                            <CheckBox Name="contactChk" IsChecked="false" Foreground="Black" Background="Black" BorderBrush="White"></CheckBox>
                            <TextBlock x:Name="ContactResultsName" Text="{Binding Name}" FontSize="50"></TextBlock>
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
            </StackPanel>

не удается получить контакты в окне списка. Я использую этот метод при нажатии кнопки,

private void GetSelectedCheckObjItem()
    {
        try
        {
            for (int i = 0; i < ContactResultsData.Items.Count; i++)
            {
                // Get a all list items from listbox
                ListBoxItem ListBoxItemObj = (ListBoxItem)ContactResultsData.ItemContainerGenerator.ContainerFromItem(ContactResultsData.Items[i]);

                // find a ContentPresenter of that list item.. [Call FindVisualChild Method]
                ContentPresenter ContentPresenterObj = FindVisualChild<ContentPresenter>(ListBoxItemObj);

                // call FindName on the DataTemplate of that ContentPresenter
                DataTemplate DataTemplateObj = ContentPresenterObj.ContentTemplate;
                CheckBox Chk = (CheckBox)DataTemplateObj.FindName("contactChk", ContentPresenterObj);

                // get a selected checkbox items.
                if (Chk.IsChecked == true)
                {
                    MessageBox.Show(Chk.Content.ToString().Trim());
                }
            }
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }

Я получил этот метод из google, он выглядит отлично, но проблема в том, что я не получаю "Findname" в этой строке,

CheckBox Chk = (CheckBox)DataTemplateObj.FindName("contactChk", ContentPresenterObj);

я также пробовал это,

<ListBox x:Name="ContactResultsData" SelectionMode="Multiple" ItemsSource="{Binding listOfContacts}" Height="293" Margin="24,0,0,0">
     <ListBox.ItemTemplate>
         <DataTemplate>
             <StackPanel Orientation="Horizontal">
                 <CheckBox Name="contactChk" 
                           IsChecked={Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}},
                                         Path=IsSelected}"
                           Foreground="Black" Background="Black" BorderBrush="White">  
                 </CheckBox>
                    <TextBlock x:Name="ContactResultsName" Text="{Binding Name}" FontSize="50"></TextBlock>
               </StackPanel>
          </DataTemplate>
     </ListBox.ItemTemplate>
</ListBox>

При использовании этого я не получаю эти свойства,

Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}

и свойства, которые я получаю,

Self and TemplatedParent

Есть ли альтернатива для добавления контакта в список. Ну, я предупреждаю об этом,

 private void contactChk_Checked(object sender, RoutedEventArgs e)
        {
            CheckBox chk2 = (CheckBox)sender;

            MessageBox.Show("" + chk2.IsChecked);
            count++;  
        }

возможно, я могу добавить контакт в список из этого метода

Надеемся на ваше предложение

благодаря

Теги:
xaml
checkbox
listbox
windows-phone-8

1 ответ

0
using Microsoft.Phone.UserData;

//Использовать это пространство имен. Заблокировать ниже.//Импровизировать немного.

  Contacts cons = new Contacts();
                       foreach(var c in con)
                    {
                        a.cnts.Add(new Contactss()
                        {
                            name=c.name,
                            number=c.phone

                    });
                }
                lstbxk.ItemsSource = a.cnts;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню