2012-11-26 3 views
1

WPF 목록 상자 내의 모든 버튼에 액세스하려면 여기 내 xaml 코드를 사용하십시오.WPF 안에 모든 컨트롤 찾기 목록 상자

<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> 

누구나 갖고 계신가요?

+0

코드 게시를 잊어 버렸습니다. – 888

답변

0

VisualTreeHelper 또는 LogicalTreeHelper 클래스의 GetChildren() 메서드를 사용할 수 있습니다. Ref SDK

시각적 트리는 UI에서 렌더링하는 모든 요소를 ​​나타내지 만 UI의 논리적 트리 필수 구조를 나타냅니다. 사용법에 대한 자세한 내용은 여기를 참조하십시오. here

희망이 도움이 되었습니까? 이 같은

3

뭔가를해야만 그냥이 그냥 간단한 예이며, 여러분의 필요에 확장 할 수 있습니다 당신이 원하는 유형과 그

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

에게 포함 된 컨트롤을 선언 트릭을

 /// <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; 
         } 
        } 
       } 
      } 
     } 

을 할 수 있습니다 .