0

次のコードでアイテムを開いて表示できるリストボックスがあります...

    private void AccountsList_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
            var listBoxItem = AccountsList.ItemContainerGenerator.ContainerFromIndex(AccountsList.SelectedIndex) as ListBoxItem;
            var txtBlk = FindVisualChildByType<TextBlock>(listBoxItem, "txtBlkAccountName");
            xCa = txtBlk.Text;

            NavigationService.Navigate(new Uri(string.Format("/ViewAccount.xaml?parameter={0}&action={1}", a.ToString(), "View"), UriKind.Relative));
    }

&

    T FindVisualChildByType<T>(DependencyObject element, String name) where T : class
    {
        if (element is T && (element as FrameworkElement).Name == name)
        {
            return element as T;
        }

        int childcount = VisualTreeHelper.GetChildrenCount(element);

        for (int i = 0; i < childcount; i++)
        {
            T childElement = FindVisualChildByType<T>(VisualTreeHelper.GetChild(element, i), name);
            if (childElement != null)
            {
                return childElement;
            }
        }
        return null;
    }

現在、リストボックスの代わりに longlistselector を実装しています。ロング リスト セレクターはデータベースからすべてのアイテムを表示しますが、このリストからアイテムを開くときに問題が発生します... このロングリスト セレクターで SelectedIndex を使用できません 助けてください...

4

2 に答える 2

1

アイテムをタップするには、List ではなく ItemTemplate 内に Tap を配置します。その後、sender プロパティを使用して必要な値を取得できます。
また、FindVisualChildByType を使用して必要な値を取得する代わりに、DataContext を使用して必要なものを取得できるはずです。

private void AccountsItem_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
        FrameworkElement element=sender as FrameworkElement ;
        Account item= element.DataContext as Account ;

        xCa = item.Name;

        NavigationService.Navigate(new Uri(string.Format("/ViewAccount.xaml?parameter={0}&action={1}", a.ToString(), "View"), UriKind.Relative));
}
于 2013-09-30T23:57:15.210 に答える