런타임시 Silverlight에서 ListBox의 ItemsPanel에 액세스하려면 어떻게해야합니까? XAML에 다음 요소 선언을 감안할 때런타임시 Silverlight에서 ListBox의 ItemsPanel에 액세스하려면 어떻게해야합니까?
1
A
답변
2
는
<ListBox x:Name="LB" Loaded="LB_Loaded" />
이를 달성하는 방법은 두 가지가 있습니다은 가장 쉬운 실버 라이트 툴킷이 필요합니다
using System.Windows.Controls.Primitives;
private void LB_Loaded()
{
var itemsPanel = LB.GetVisualChildren().OfType<Panel>().FirstOrDefault();
}
을 아니면 VisualTreeHelper를 사용하여 다음을 쓸 수 있습니다 재귀 적 방법 :
T GetFirstChildOfType<T>(DependencyObject visual) where T:DependencyObject
{
var itemCount = VisualTreeHelper.GetChildrenCount(visual);
if (itemCount < 1)
{
return null;
}
for (int i = 0; i < itemCount; i++)
{
var dp = VisualTreeHelper.GetChild(visual, i);
if (dp is T)
{
return (T)dp;
}
}
for (int i = 0; i < itemCount; i++)
{
var dp = GetFirstChildOfType<T>(VisualTreeHelper.GetChild(visual, i));
if (dp != null) return dp;
}
return null;
}
유사한 방식 : terphi의 솔루션에
void ItemsPanelSample_Loaded(object sender, RoutedEventArgs e)
{
var itemsPanel = GetFirstChildOfType<Panel>(LB);
}
0
건물, 내가 유형에 대한 검색이 목록 상자는 무엇을하는 복수의 여러 인스턴스를 가질 때 당신은뿐만 일반적으로 찾고있는 요소의 목록을 반환하도록 변경 를 찾고 있습니다. 또한로드 된 이벤트에서 문제를 발견했지만 대신 디스패처를 사용하여 테스트 할 때마다 항목을 찾습니다. 생성자
private List<TextBlock> TextBlockList;
,리스트 박스와 데이터 소스를 연관 후 :
Dispatcher.BeginInvoke(delegate { TextBlockList = GetFirstChildOfType<TextBlock>(listBox1); });
List<T> GetFirstChildOfType<T>(DependencyObject visual) where T : DependencyObject
{
DependencyObject ControlCandidate;
List<T> TempElements;
List<T> TargetElementList = new List<T>();
var itemCount = VisualTreeHelper.GetChildrenCount(visual);
if (itemCount > 0)
{
for (int i = 0; i < itemCount; i++)
{
ControlCandidate = VisualTreeHelper.GetChild(visual, i);
if (ControlCandidate is T)
TargetElementList.Add((T)ControlCandidate);
}
for (int i = 0; i < itemCount; i++)
{
TempElements = GetFirstChildOfType<T>(VisualTreeHelper.GetChild(visual, i));
if (TempElements.Count > 0)
TargetElementList.AddRange(TempElements);
}
}
return TargetElementList;
}
관련 문제
- 1. Silverlight에서 워크 플로 서비스에 액세스하려면 어떻게해야합니까?
- 2. ScrollViewer를 ListBox의 ContentPresenter로 바꾸려면 어떻게해야합니까?
- 3. 확장기를 ListBox의 오른쪽에 고정하려면 어떻게해야합니까?
- 4. 리본 상자에 액세스하려면 어떻게해야합니까?
- 5. Javascript로 memcached에 액세스하려면 어떻게해야합니까?
- 6. 내 ResourceDictionary에 액세스하려면 어떻게해야합니까?
- 7. 스프링 컨테이너에 액세스하려면 어떻게해야합니까?
- 8. C 레벨 코드에서 Ruby AST에 액세스하려면 어떻게해야합니까?
- 9. 코드 숨김에서 x : 이름에 액세스하려면 어떻게해야합니까?
- 10. 익명 개체의 속성에 액세스하려면 어떻게해야합니까?
- 11. WebKit.NET을 사용하여 DOM에 액세스하려면 어떻게해야합니까?
- 12. 다른 클래스에 반복적으로 액세스하려면 어떻게해야합니까?
- 13. 응용 프로그램에서 conact에 액세스하려면 어떻게해야합니까?
- 14. 이름으로 포스트그레스 테이블에 액세스하려면 어떻게해야합니까?
- 15. 이 해시에서 params에 액세스하려면 어떻게해야합니까?
- 16. Weblogic을 사용하여 파일에 액세스하려면 어떻게해야합니까?
- 17. Outlook에서 마우스 이벤트에 액세스하려면 어떻게해야합니까?
- 18. GridView에서 행의 값에 액세스하려면 어떻게해야합니까?
- 19. Java에서 Perl 변수에 액세스하려면 어떻게해야합니까?
- 20. FOREACHLOOP없이 익명 형식에 액세스하려면 어떻게해야합니까?
- 21. Javascript로 iframe 요소에 액세스하려면 어떻게해야합니까?
- 22. 원격으로 SVN 서버에 액세스하려면 어떻게해야합니까?
- 23. Sass에서 Rails 객체에 액세스하려면 어떻게해야합니까?
- 24. 뷰에서 중첩 모델에 액세스하려면 어떻게해야합니까?
- 25. IXMLDOMNode에서 요소 속성에 액세스하려면 어떻게해야합니까?
- 26. 노트북 내장 카메라에 액세스하려면 어떻게해야합니까?
- 27. ListBox의 항목을 인스턴스 개체의 목록에 바인딩하려면 어떻게해야합니까?
- 28. 런타임시 jruby 버전을 얻으려면 어떻게해야합니까?
- 29. 런타임시 Unity 카탈로그를 확장하려면 어떻게해야합니까?
- 30. Silverlight에서 컨트롤에 상태를 추가하려면 어떻게해야합니까?