我在XML中添加DataGrid
,因为代码如下所示。现在,如何以编程方式访问名为ComboBox
的{{1}}?我无法使用名称Combo1
正常访问它。我希望能够检索它的值,或者更改itemssource等。
Combo1
答案 0 :(得分:0)
你应该能够在这里找到你需要的东西。但是,我会说这样做并不是最好的做法......
private childItem FindVisualChild<childItem>(DependencyObject obj)
where childItem : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
if (child != null && child is childItem)
return (childItem)child;
else
{
childItem childOfChild = FindVisualChild<childItem>(child);
if (childOfChild != null)
return childOfChild;
}
}
return null;
}
答案 1 :(得分:0)
public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject
{
if (depObj != null)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
if (child != null && child is T)
{
yield return (T)child;
}
foreach (T childOfChild in FindVisualChildren<T>(child))
{
yield return childOfChild;
}
}
}
}
但我建议您阅读有关MVVM模式的更多信息。