2

I am trying to find child element from Listbox. Listbox contains Itemtemplate. Here is my design. I have created UserControl. In that I have added ListBox. I am showing this control as pop up. Here is code for pop up

        GlobalSettings.popup = new Popup();
        //GlobalSettings.popup.VerticalOffset = 50;

        FilesListControl popupcontrol = new FilesListControl();
        popupcontrol.Height = 480;
        popupcontrol.Width = 480;
        GlobalSettings.popup.Child = popupcontrol;
        popupcontrol.fileListbox.ItemsSource = filesList;
        LayoutRoot.IsHitTestVisible = false;
        GlobalSettings.popup.IsOpen = true;

        //Here I need to create checkbox. so thats why I need to find the child elemnt of listbox

        popupcontrol.btnDone.Click += (s, args) =>
        { 

        };

Here code from FilesListControl

<ScrollViewer Grid.Row="0" HorizontalScrollBarVisibility="Auto">
    <ListBox Name="fileListbox">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <CheckBox Name="chkFile" CommandParameter="{Binding value}" Content="{Binding Key}" Click="chkFile_Click" FontFamily="Segoe WP SemiLight"></CheckBox>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</ScrollViewer>

I want to find the CheckBox i.e. chkFile. Here is my code

ListBoxItem item = popupcontrol.fileListbox.ItemContainerGenerator.ContainerFromIndex(1) as ListBoxItem;
CheckBox chk = FindFirstElementInVisualTree<CheckBox>(item);

private T FindFirstElementInVisualTree<T>(DependencyObject parentElement) where T : DependencyObject
{
    var count = VisualTreeHelper.GetChildrenCount(parentElement);
    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;
}

But nothing is getting. What I did wrong? How can I access CheckBox Click event?

Ajay
  • 6,418
  • 18
  • 79
  • 130

0 Answers0