2015-02-09 53 views
2

我无法找到列表框XAML复选框:WP8:无法获取复选框在列表框中

<ListBox x:Name="my_list" Grid.Row="0"> 
      <ItemsControl.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal" > 
         <CheckBox x:Name="cbx_state" Tag="{Binding}"/> 
         <TextBlock x:Name="txt_string" Text="{Binding}" VerticalAlignment="Center" FontSize="34" /> 
        </StackPanel> 
       </DataTemplate> 
      </ItemsControl.ItemTemplate> 
</ListBox> 

我试图让cbk_state,这样我就可以设置它检查的财产,功能我用得到复选框是

private void GetItemsRecursive(DependencyObject lb) 
    { 
     var childrenCount = VisualTreeHelper.GetChildrenCount(lb); 

     for (int i = 0; i < childrenCount; i++) 
     { 
      var child = VisualTreeHelper.GetChild(lb, i); 


      if (child is ListBoxItem) 
      { 
       MessageBox.Show(child.GetType().ToString()); 
       return; 
      } 

      GetItemsRecursive(child); 
     } 
    } 

问题是,我得到ChildrenCount为零每次。 我已经通过几种方法了,但没有这样的use.Also试图 this 但在这里,我没有得到ItemContainerGenerator的列表框。

我新的WP8编程PLZ help.Thanks

回答

0

喜得到了解决here。没有必要将虚拟化属性设置为简单。

private void GetItemsRecursive(DependencyObject lb) 
{ 
    var childrenCount = VisualTreeHelper.GetChildrenCount(lb); 

    for (int i = 0; i < childrenCount; i++) 
    { 
     DependencyObject child = VisualTreeHelper.GetChild(lb, i); 

     if (child is CheckBox) // specific/child control 
     { 
      CheckBox targeted_element = (CheckBox)child; 

      targeted_element.IsChecked = true; 

      if (targeted_element.IsChecked == true) 
      { 

       return; 
      } 
     } 

     GetItemsRecursive(child); 
    } 
} 

只是在DependencyObject child = VisualTreeHelper.GetChild(lb,i)有点变化;代替var孩子

0

你是询问获得CheckboxChecked财产?

this您正在查找的是?示例代码使用VisualTreeHelper内就找到ParentChildren控制:

private ChildControl FindVisualChild<ChildControl>(DependencyObject DependencyObj) 
    where ChildControl : DependencyObject 
    { 
     for (int i = 0; i < VisualTreeHelper.GetChildrenCount(DependencyObj); i++) 
     { 
      DependencyObject Child = VisualTreeHelper.GetChild(DependencyObj, i); 

      if (Child != null && Child is ChildControl) 
      { 
       return (ChildControl)Child; 
      } 
      else 
      { 
       ChildControl ChildOfChild = FindVisualChild<ChildControl>(Child); 

       if (ChildOfChild != null) 
       { 
        return ChildOfChild; 
       } 
      } 
     } 
     return null; 
    } 
+0

试过这也是我在这里得到.ItemContainerGenerator。为空 – user3207655 2015-02-11 06:35:07