VisualTreeHelper遍历listbox遇到的问题,测试解决办法
2014-02-26 15:47
369 查看
VisualTreeHelper遍历listbox找到要找的stackpanel后会在同一个stackpanel中遍历2遍不知道什么原因,暂时只能让这2遍全部执行,导出,全选反选能做到
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using C1.Phone;
using System.Windows.Media;
namespace jbgswin
{
public partial class peoplelist : PhoneApplicationPage
{
public peoplelist()
{
InitializeComponent();
this.lst.ItemsSource = App.mygc.ToList();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
for (int i = 0; i < this.lst.Items.Count; i++)
{
C1ListBoxItem lb = this.lst.ItemContainerGenerator.ContainerFromIndex(i) as C1ListBoxItem;
// DataTemplate da = lb.FindName("DataTemplate1") as DataTemplate;
CheckBox cka = FindFirstElementInVisualTree<CheckBox>(lb) as CheckBox;
// StackPanel stack = (StackPanel)lb.FindName("sa");
// CheckBox cka = stack.FindName("ck") as CheckBox;
cka.IsChecked = true;
}
}
private T FindFirstElementInVisualTree<T>(DependencyObject parentElement) where T : DependencyObject
{
var count = VisualTreeHelper.GetChildrenCount(parentElement);
var b = count;
if (count == 0)
return null;
for (int i = 0; i < count; i++)
{
var child = VisualTreeHelper.GetChild(parentElement, i);
if (child != null && child is T)
{
return (T)child;
}
else
{
var result = FindFirstElementInVisualTree<T>(child);
if (result != null)
return result;
}
}
return null;
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
for (int i = 0; i < this.lst.Items.Count; i++)
{
C1ListBoxItem lb = this.lst.ItemContainerGenerator.ContainerFromIndex(i) as C1ListBoxItem;
// DataTemplate da = lb.FindName("DataTemplate1") as DataTemplate;
CheckBox cka = FindFirstElementInVisualTree<CheckBox>(lb) as CheckBox;
// StackPanel stack = (StackPanel)lb.FindName("sa");
// CheckBox cka = stack.FindName("ck") as CheckBox;
if (cka.IsChecked == true)
{
App.toimport.Add(App.mygc.ToList().Where(h=>h.Id.ToString()==cka.Tag.ToString()).FirstOrDefault());
}
}
NavigationService.Navigate(new Uri("/chakan.xaml", UriKind.Relative));
// MessageBox.Show(App.toimport.Count.ToString());
}
private void Button_Click_2(object sender, RoutedEventArgs e)
{
for (int i = 0; i < this.lst.Items.Count; i++)
{
C1ListBoxItem lb = this.lst.ItemContainerGenerator.ContainerFromIndex(i) as C1ListBoxItem;
// DataTemplate da = lb.FindName("DataTemplate1") as DataTemplate;
/* CheckBox cka = FindFirstElementInVisualTree<CheckBox>(lb) as CheckBox;
int a = 0;
// StackPanel stack = (StackPanel)lb.FindName("sa");
// CheckBox cka = stack.FindName("ck") as CheckBox;
if (cka.IsChecked == true)
{
// App.toimport.Add(App.mygc.ToList().Where(h => h.Id.ToString() == cka.Tag.ToString()).FirstOrDefault());
NavigationService.Navigate(new Uri("/addpeople.xaml?id=" + cka.Tag.ToString(), UriKind.Relative));
}*/
searchtonav(lb);
}
}
private void Button_Click_3(object sender, RoutedEventArgs e)
{
for (int i = 0; i < this.lst.Items.Count; i++)
{
C1ListBoxItem lb = this.lst.ItemContainerGenerator.ContainerFromIndex(i) as C1ListBoxItem;
/*StackPanel sp = FindFirstElementInVisualTree<StackPanel>(lb) as StackPanel;
// DataTemplate da = lb.FindName("DataTemplate1") as DataTemplate;
CheckBox cka = sp.FindName("ck") as CheckBox;
int c = 0;
// StackPanel stack = (StackPanel)lb.FindName("sa");
// CheckBox cka = stack.FindName("ck") as CheckBox;
cka.IsChecked = false;*/
SearchVisualTree(lb);
}
}
private void searchtonav(DependencyObject targetElement)
{
var count = VisualTreeHelper.GetChildrenCount(targetElement);
if (count == 0)
return;
for (int i = 0; i < count; i++)
{
var child = VisualTreeHelper.GetChild(targetElement, i);
if (child is StackPanel)
{
StackPanel targetItem = (StackPanel)child;
CheckBox cka = targetItem.FindName("ck") as CheckBox;
int c = 0;
// StackPanel stack = (StackPanel)lb.FindName("sa");
// CheckBox cka = stack.FindName("ck") as CheckBox;
if (cka.IsChecked==true)
{
NavigationService.Navigate(new Uri("/addpeople.xaml?id=" + cka.Tag.ToString(), UriKind.Relative));
}
return;
}
else
{
searchtonav(child);
}
}
}
private void SearchVisualTree(DependencyObject targetElement)
{
var count = VisualTreeHelper.GetChildrenCount(targetElement);
if (count == 0)
return;
for (int i = 0; i < count; i++)
{
var child = VisualTreeHelper.GetChild(targetElement, i);
if (child is StackPanel)
{
StackPanel targetItem = (StackPanel)child;
CheckBox cka = targetItem.FindName("ck") as CheckBox;
int c = 0;
// StackPanel stack = (StackPanel)lb.FindName("sa");
// CheckBox cka = stack.FindName("ck") as CheckBox;
cka.IsChecked = false;
return;
}
else
{
SearchVisualTree(child);
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using C1.Phone;
using System.Windows.Media;
namespace jbgswin
{
public partial class peoplelist : PhoneApplicationPage
{
public peoplelist()
{
InitializeComponent();
this.lst.ItemsSource = App.mygc.ToList();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
for (int i = 0; i < this.lst.Items.Count; i++)
{
C1ListBoxItem lb = this.lst.ItemContainerGenerator.ContainerFromIndex(i) as C1ListBoxItem;
// DataTemplate da = lb.FindName("DataTemplate1") as DataTemplate;
CheckBox cka = FindFirstElementInVisualTree<CheckBox>(lb) as CheckBox;
// StackPanel stack = (StackPanel)lb.FindName("sa");
// CheckBox cka = stack.FindName("ck") as CheckBox;
cka.IsChecked = true;
}
}
private T FindFirstElementInVisualTree<T>(DependencyObject parentElement) where T : DependencyObject
{
var count = VisualTreeHelper.GetChildrenCount(parentElement);
var b = count;
if (count == 0)
return null;
for (int i = 0; i < count; i++)
{
var child = VisualTreeHelper.GetChild(parentElement, i);
if (child != null && child is T)
{
return (T)child;
}
else
{
var result = FindFirstElementInVisualTree<T>(child);
if (result != null)
return result;
}
}
return null;
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
for (int i = 0; i < this.lst.Items.Count; i++)
{
C1ListBoxItem lb = this.lst.ItemContainerGenerator.ContainerFromIndex(i) as C1ListBoxItem;
// DataTemplate da = lb.FindName("DataTemplate1") as DataTemplate;
CheckBox cka = FindFirstElementInVisualTree<CheckBox>(lb) as CheckBox;
// StackPanel stack = (StackPanel)lb.FindName("sa");
// CheckBox cka = stack.FindName("ck") as CheckBox;
if (cka.IsChecked == true)
{
App.toimport.Add(App.mygc.ToList().Where(h=>h.Id.ToString()==cka.Tag.ToString()).FirstOrDefault());
}
}
NavigationService.Navigate(new Uri("/chakan.xaml", UriKind.Relative));
// MessageBox.Show(App.toimport.Count.ToString());
}
private void Button_Click_2(object sender, RoutedEventArgs e)
{
for (int i = 0; i < this.lst.Items.Count; i++)
{
C1ListBoxItem lb = this.lst.ItemContainerGenerator.ContainerFromIndex(i) as C1ListBoxItem;
// DataTemplate da = lb.FindName("DataTemplate1") as DataTemplate;
/* CheckBox cka = FindFirstElementInVisualTree<CheckBox>(lb) as CheckBox;
int a = 0;
// StackPanel stack = (StackPanel)lb.FindName("sa");
// CheckBox cka = stack.FindName("ck") as CheckBox;
if (cka.IsChecked == true)
{
// App.toimport.Add(App.mygc.ToList().Where(h => h.Id.ToString() == cka.Tag.ToString()).FirstOrDefault());
NavigationService.Navigate(new Uri("/addpeople.xaml?id=" + cka.Tag.ToString(), UriKind.Relative));
}*/
searchtonav(lb);
}
}
private void Button_Click_3(object sender, RoutedEventArgs e)
{
for (int i = 0; i < this.lst.Items.Count; i++)
{
C1ListBoxItem lb = this.lst.ItemContainerGenerator.ContainerFromIndex(i) as C1ListBoxItem;
/*StackPanel sp = FindFirstElementInVisualTree<StackPanel>(lb) as StackPanel;
// DataTemplate da = lb.FindName("DataTemplate1") as DataTemplate;
CheckBox cka = sp.FindName("ck") as CheckBox;
int c = 0;
// StackPanel stack = (StackPanel)lb.FindName("sa");
// CheckBox cka = stack.FindName("ck") as CheckBox;
cka.IsChecked = false;*/
SearchVisualTree(lb);
}
}
private void searchtonav(DependencyObject targetElement)
{
var count = VisualTreeHelper.GetChildrenCount(targetElement);
if (count == 0)
return;
for (int i = 0; i < count; i++)
{
var child = VisualTreeHelper.GetChild(targetElement, i);
if (child is StackPanel)
{
StackPanel targetItem = (StackPanel)child;
CheckBox cka = targetItem.FindName("ck") as CheckBox;
int c = 0;
// StackPanel stack = (StackPanel)lb.FindName("sa");
// CheckBox cka = stack.FindName("ck") as CheckBox;
if (cka.IsChecked==true)
{
NavigationService.Navigate(new Uri("/addpeople.xaml?id=" + cka.Tag.ToString(), UriKind.Relative));
}
return;
}
else
{
searchtonav(child);
}
}
}
private void SearchVisualTree(DependencyObject targetElement)
{
var count = VisualTreeHelper.GetChildrenCount(targetElement);
if (count == 0)
return;
for (int i = 0; i < count; i++)
{
var child = VisualTreeHelper.GetChild(targetElement, i);
if (child is StackPanel)
{
StackPanel targetItem = (StackPanel)child;
CheckBox cka = targetItem.FindName("ck") as CheckBox;
int c = 0;
// StackPanel stack = (StackPanel)lb.FindName("sa");
// CheckBox cka = stack.FindName("ck") as CheckBox;
cka.IsChecked = false;
return;
}
else
{
SearchVisualTree(child);
}
}
}
}
}
相关文章推荐
- LoadRunner在性能测试工作中遇到的问题以及解决办法小结
- 项目中遇到的超卖问题及解决办法(使用go做测试工具)
- Jmeter做性能测试遇到的问题及解决办法
- LoadRunner11压力测试时遇到问题及解决办法
- 在使用cppunit,搭建测试环境时遇到的问题以及解决办法(仅供参考)
- 部署测试环境时遇到的问题及解决办法
- LoadRunner在性能测试工作中遇到的问题以及解决办法小结
- ubuntu13.10(楼主是在麒麟系统下测试的)下ns2环境搭建和可能遇到的问题及解决办法
- 在使用cppunit,搭建测试环境时遇到的问题以及解决办法(仅供参考)
- “Microsoft Visual Studio遇到了问题,需要关闭”解决办法
- QT5.7.0交叉编译与移植遇到的问题以及解决办法
- android编程过程中遇到的关于Canvas: trying to use a recycled bitmap android.graphics.Bitmap问题的原因及解决办法
- eclipse +python 安装时遇到的问题及解决办法
- SQL Server 2000遇到的两个问题及其解决办法
- git push origin ***遇到问题时的解决办法
- Server 2008上IIS配置过程中遇到的问题及解决办法
- oracle 新手遇到常见问题的解决办法
- cocos2d-x 编译 Anroid版本遇到的问题以及解决办法
- PYTHON -MYSQLDB安装遇到的问题和解决办法
- java+hibernate开发时遇到的一些问题及解决办法