【发布时间】:2013-02-19 21:28:42
【问题描述】:
在我的 WPF 窗口中,我声明了以下内容:
public List<Brand> BrandList;
然后在构造函数中填充列表:
BrandList = new List<Brand>(EntityDao.GetInstance().GetProducts().Select(p => p.Brand).Distinct().OrderBy(b => b.Name));
然后在我的 XAML 代码中,我声明了一个 DataGrid:
<DataGrid <!-- Properties omitted--> >
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Path=BrandList, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!-- Other columns omitted -->
</DataGrid.Columns>
</DataGrid>
问题是我的组合框是空的。通过调试,我验证了BrandList对象包含80多个对象,所有对象都定义了ToString()方法。
DataGrid 的 ItemsSource 是一个简单的 ObservableCollection。
有什么想法吗?
【问题讨论】:
-
如果将绑定的 traceLevel 设置为高,是否会得到任何调试信息?:
-
使用 WPF 检查器之类的工具,您可以检查您的绑定是否有错误,当您测试很多东西时它可能会有所帮助...
-
我收到很多以 System.Windows.Data 结尾的警告警告:69 : BindingExpression (hash=33514934): Found data context element:
(OK) -
以及您在示例中设置数据上下文的位置?
-
我没有。但是RelativeSource 还不够吗?
标签: c# wpf data-binding datagrid combobox