2015-02-09 52 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