如何在Silverlight中在運行時訪問ListBox的ItemsPanel?如何在運行時在Silverlight中訪問ListBox的ItemsPanel?
1
A
回答
2
鑑於XAML以下元素聲明
<ListBox x:Name="LB" Loaded="LB_Loaded" />
有兩種方法來實現這一點,最簡單的要求Silverlight工具包:
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. 如何訪問Windows Phone中的ListBox中的內部ItemsControl Silverlight
- 2. 在運行時如何刷新ListBox?
- 3. 如何訪問Silverlight/C#中的ListBox控件的ScrollViewer元素?
- 4. Silverlight Listbox在運行時的更新風格
- 5. 如何訪問運行時
- 6. 從DataTemplate訪問ItemsPanel屬性
- 7. 如何在VB.net中(在運行時)創建一個ListBox?
- 8. 宏訪問在運行時
- 9. 如何在運行時在Silverlight中的Childwindow中應用樣式?
- 10. 如何知道ListBox在Silverlight中完成呈現的時間?
- 11. 如何在Silverlight中訪問WCF API?
- 12. 在運行時更改ListBox的ItemsPanelTemplate
- 13. 如何在運行時在grails 2.3.2中訪問BuildConfig.grooy
- 14. 如何在Firefox中運行時訪問JavaScript執行跟蹤?
- 15. 如何訪問TabControl.ContentTemplate中的ListBox?
- 16. 如何檢查Silverlight Listbox何時更新
- 17. 如何從DetailsView中的ListBox中的SqlDataSource訪問訪問字段?
- 18. 如何在運行時訪問另一個項目中的類
- 19. 在運行時在Silverlight中創建ControlTemplate
- 20. ItemsControl,ItemsPanel和ItemsPresenter(Silverlight,XAML)
- 21. 如何在Silverlight中使用Listbox進行動態綁定?
- 22. 如何在運行javascript函數時訪問以前的時間
- 23. 如何循環訪問數據庫中的一組項目Silverlight控件(如ListBox)?
- 24. Silverlight Listbox與ListBox性能問題
- 25. ListBox將DataTemplate項綁定到ItemsPanel Canvas.Left/Top
- 26. WPF Listbox在運行時更改容器
- 27. 訪問在運行時創建的UILabel
- 28. 如何在運行時在Silverlight 3中替換ControlTemplate部件?
- 29. 如何在運行時綁定silverlight中的列的背景?
- 30. 如何在qtp中運行時訪問對象?