Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 组合框未在datagrid中绑定_Wpf_Datagrid_Combobox_Datacontext - Fatal编程技术网

Wpf 组合框未在datagrid中绑定

Wpf 组合框未在datagrid中绑定,wpf,datagrid,combobox,datacontext,Wpf,Datagrid,Combobox,Datacontext,我有一个用字符串绑定到BindingList的组合框。它工作得很好 public BindingList<string> MyList { get { BindingList<string> list = new BindingList<string>(); list.Add("one"); list.Add("two"); list.Add("three");

我有一个用字符串绑定到BindingList的组合框。它工作得很好

public BindingList<string> MyList
{
    get
    {
        BindingList<string> list = new BindingList<string>();
        list.Add("one");
        list.Add("two");
        list.Add("three");

        return list;
    }
}
公共绑定列表MyList
{
得到
{
BindingList=新建BindingList();
列表。添加(“一”);
列表。添加(“两个”);
列表。添加(“三”);
退货清单;
}
}
xaml:


当我将相同的代码放入WPF 4 datagrid时,它不再工作(但datagrid外部的组合仍然运行正常):



为什么??谢谢

因为在
数据网格
的情况下,
组合框
具有不同的
数据上下文
——网格行数据项,它没有
MyList
属性

要解决此问题,可以使用
RelativeSource
绑定到网格的
DataContext

<DataGrid AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <ComboBox x:Name="MyCmbBox" ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.MyList}">
                        <ComboBox.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding}" />
                            </DataTemplate>
                        </ComboBox.ItemTemplate>
                    </ComboBox>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>


谢谢。在谷歌搜索了4个小时后,你在7分钟内回答了。感谢you@o..o-不客气。将来,要捕获此类错误,请在调试器下运行应用程序,并在VisualStudio中查看输出窗口。您将在那里看到绑定错误。
<DataGrid AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <ComboBox x:Name="MyCmbBox" ItemsSource="{Binding Path=MyList}">
                        <ComboBox.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding}" />
                            </DataTemplate>
                        </ComboBox.ItemTemplate>
                    </ComboBox>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>
<DataGrid AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <ComboBox x:Name="MyCmbBox" ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.MyList}">
                        <ComboBox.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding}" />
                            </DataTemplate>
                        </ComboBox.ItemTemplate>
                    </ComboBox>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>