查找WPF列表框中的所有控件

查找WPF列表框中的所有控件,wpf,Wpf,我想访问WPF列表框中的所有按钮,这是我的xaml代码 <Grid> <ScrollViewer x:Name="myScrollViewer" HorizontalScrollBarVisibility="Disabled" MouseDown="myStackPanel_MouseDown" MouseUp="myScrollViewer_MouseMove" VerticalScrollBarVisibility="Hidden" Height="435" B

我想访问WPF列表框中的所有按钮,这是我的xaml代码

<Grid>
    <ScrollViewer x:Name="myScrollViewer" HorizontalScrollBarVisibility="Disabled" MouseDown="myStackPanel_MouseDown"  MouseUp="myScrollViewer_MouseMove"  VerticalScrollBarVisibility="Hidden" Height="435" BorderBrush="{x:Null}" Width="250" Margin="0,-4,-4,-4" ScrollChanged="scrollerVideoCategory_ScrollChanged">
        <StackPanel Orientation="Vertical" Name="StackPanleEmployee" Margin="40,0,0,0" MouseDown="myStackPanel_MouseDown"  MouseUp="myScrollViewer_MouseMove"   Loaded="StackPanleVideoCategory_Loaded" >
            <ListBox x:Name="ListBoxEmployeVideoType" MouseDown="myStackPanel_MouseDown"  MouseUp="myScrollViewer_MouseMove"  BorderThickness="0,1,0,0" BorderBrush="#E2E2E2">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Vertical" Width="200" Name="myStackPanel" MouseDown="myStackPanel_MouseDown"  MouseUp="myScrollViewer_MouseMove" >
                            <Button  VerticalAlignment="Center" Style="{StaticResource ButtonVideoTabItemDefault}"   MouseUp="b_MouseMove"  Tag="{Binding Path}" Content="{Binding Name}" Name="btnSubCategory"  Click="btnVideoCategorySelection_Click"></Button>
                            <Separator Background="#E2E2E2" Margin="0"/>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </StackPanel>
    </ScrollViewer>
</Grid>

有人知道吗?

您可以使用VisualTreeHelper或LogicalTreeHelper类的GetChildren()方法

可视化树表示UI中呈现的所有元素,而逻辑树则表示UI的基本结构。您可以阅读有关用法的详细信息


希望这有帮助。

像这样的事情可能会奏效

        /// <summary>
        /// Finds the visual child.
        /// </summary>
        /// <typeparam name="childItem">The type of the child item.</typeparam>
        /// <param name="obj">The obj.</param>
        /// <returns></returns>
        private IEnumerable<T> FindVisualChildren<T>(DependencyObject obj) where T : DependencyObject
        {
            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
            {
                DependencyObject child = VisualTreeHelper.GetChild(obj, i);
                if (child != null && child is T)
                {
                    yield return (T)child;
                }
                else
                {
                    var childOfChild = FindVisualChildren<T>(child);
                    if (childOfChild != null)
                    {
                        foreach (var subchild in childOfChild)
                        {
                            yield return subchild;
                        }
                    }
                }
            }
        }
//
///查找可视子对象。
/// 
///子项的类型。
///obj。
/// 
私有IEnumerable FindVisualChildren(DependencyObject对象),其中T:DependencyObject
{
for(int i=0;i
只需声明所需的类型和包含它们的控件

  var buttons = FindVisualChildren<Button>(ListBoxEmployeVideoType).ToList();
var buttons=FindVisualChildren(ListBoxEmployeVideoType).ToList();

这只是一个简单的示例,可以扩展到您的需要。

您忘记发布代码了