從 WPF 容器中提取特定子控制項:實用方法
WPF 程式設計中的一個常見挑戰涉及在父容器中隔離特定類型的子控制項。本文示範如何有效擷取嵌套在 ComboBox
.Grid
中的
讓我們檢查一個名為「MyContainer」的 Grid
的範例 XAML 結構:
<code class="language-xml"><Grid x:Name="MyContainer"> <Label Content="Name" Name="label1"/> <Label Content="State" Name="label2"/> <ComboBox Height="23" HorizontalAlignment="Left" Name="comboBox1"/> <ComboBox Height="23" HorizontalAlignment="Left" Name="comboBox3"/> <ComboBox Height="23" HorizontalAlignment="Left" Name="comboBox4"/> </Grid></code>
為了有效地檢索嵌入的 ComboBox
控件,我們可以利用遞歸擴展方法:
<code class="language-csharp">public static T GetChildOfType<T>(this DependencyObject depObj) where T : DependencyObject { if (depObj == null) return null; for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++) { DependencyObject child = VisualTreeHelper.GetChild(depObj, i); if (child is T result) { return result; } T result2 = GetChildOfType<T>(child); if (result2 != null) return result2; } return null; }</code>
這個擴展方法遞歸地遍歷視覺化樹。 使用它,您可以輕鬆存取 ComboBox
元素:
<code class="language-csharp">var myComboBox = this.MyContainer.GetChildOfType<ComboBox>();</code>
這個簡潔的程式碼片段有效地檢索在 ComboBox
網格中找到的第一個 MyContainer
。 請注意,此方法只會傳回它遇到的 first ComboBox。 要檢索所有 ComboBox,需要更全面的方法,例如迭代子級並在循環中使用 child is ComboBox
。
以上是如何從 WPF 網格中高效檢索子組合方塊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!