如何從窗口獲取所有按鈕? (將IsEnabled屬性設置爲false)Windows Phone 7:如何從窗口獲取所有按鈕?
0
A
回答
2
您可以遍歷所有控件。例如:
foreach (var ctrl in LayoutRoot.Children)
{
if (ctrl is Button)
((Button)ctrl).IsEnabled = false;
}
當然,LayoutRoot
是默認的名稱。如果需要,您可以將其更改爲另一個容器。
編輯爲允許遞歸嵌套面板(在評論中提到)。
private void DisableAllButtons(Panel parent)
{
foreach (var ctrl in parent.Children)
{
if (ctrl is Button)
{
((Button)(ctrl)).IsEnabled = false;
}
else
{
if (ctrl is Panel)
{
if (((Panel)ctrl).Children.Count > 0)
{
DisableAllButtons((Panel)ctrl);
}
}
}
}
}
1
那麼,DisableAllButtons()有時可能會工作,但通常是不夠的。這是一個真實世界的例子。 (經過一些簡化。)
ListBox ScrollViewer Border Grid ScrollContentPresenter ItemsPresenter VirtualizingStackPanel ListBoxItem ContentPresenter Grid TextBlock TextBlock Button ListBoxItem ContentPresenter Grid TextBlock TextBlock TextBlock ScrollBar Grid Grid RepeatButton Thumb Rectangle RepeatButton
如果你想要一個可靠的解決方案,然後代替枚舉面板小孩使用 VisualTreeHelper類及其方法GetCildrenCount()和GetChild()。這是代碼:
void DisableAllButtons(FrameworkElement fe)
{
if (fe is Button)
((Button)(fe)).IsEnabled = false;
int count = VisualTreeHelper.GetChildrenCount(fe);
for (int index = 0; index < count; ++index)
{
DisableAllButtons((FrameworkElement)VisualTreeHelper.GetChild(fe, index));
}
}
相關問題
- 1. Windows Phone 7按鈕
- 2. Windows Phone 7彈出窗口
- 3. 按鈕顏色-Windows Phone 7
- 4. Windows Phone 7按鈕狀態
- 5. Windows phone 7按鈕「邊框」
- 6. 如何在windows phone 7上從vb.net打開瀏覽器窗口?
- 7. 在Windows Phone 7中獲取UI按鈕的事件
- 8. 從Windows Phone 8發送信息到PC窗口7窗體
- 9. 如何獲取所有窗口組?
- 10. Windows:如何獲取所有可見窗口的列表?
- 11. Windows Phone 7開發延遲按鈕
- 12. Windows Phone 7後退按鈕問題
- 13. 更改按鈕文本 - Windows Phone 7
- 14. Windows Phone 7上的TextWrapping按鈕
- 15. 在Windows Phone 7中的按鈕命令
- 16. 帶圖像的Windows Phone 7按鈕
- 17. silverlight windows phone 7中的按鈕問題
- 18. Windows Phone 7物理按鈕超載
- 19. Windows Phone 7的搜索按鈕
- 20. Windows Phone 7中的透明按鈕
- 21. longlistselector中的windows phone 7按鈕
- 22. Windows Phone 7中的按鈕陣列
- 23. 獲取所有chrome窗口
- 24. 如何獲取有關窗口的按鈕位置
- 25. 如何在按下開始按鈕(Windows Phone)時按下「開始」按鈕(Windows Phone)
- 26. 如何從mp4容器獲取aac音頻? (Windows Phone 7和C#)
- 27. 如何在Windows Phone 7中從Facebook獲取提要?
- 28. 如何從我的Windows Phone 7仿真器獲取數據
- 29. 如何 - Windows Phone 7?
- 30. 如何獲取所有聯繫人並寫入Windows Phone 7文件
這不需要遞歸地完成?例如,如果'LayoutRoot'包含另一個包含'Button'的Panel。 – Praetorian 2011-05-31 23:12:05
@Praetorian:我假定用戶只是指一個容器,但是你是對的,如果該容器包含另一個容器,那麼它將需要遞歸地完成。 @Tony - 你有嵌套的容器嗎? – keyboardP 2011-05-31 23:15:46
編輯答案只是有嵌套面板。 – keyboardP 2011-05-31 23:23:22