如何以编程方式访问Datagrid中的ComboBox

时间:2012-11-01 20:03:23

标签: c# wpf datagrid

我在XML中添加DataGrid,因为代码如下所示。现在,如何以编程方式访问名为ComboBox的{​​{1}}?我无法使用名称Combo1正常访问它。我希望能够检索它的值,或者更改itemssource等。

Combo1

2 个答案:

答案 0 :(得分:0)

你应该能够在这里找到你需要的东西。但是,我会说这样做并不是最好的做法......

http://blogs.msdn.com/b/wpfsdk/archive/2007/04/16/how-do-i-programmatically-interact-with-template-generated-elements-part-ii.aspx

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模式的更多信息。