组合框的项目并不反映其源所做的更改源的其他变化DatagridComboBoxColumn.ItemsSource没有反映从源头比开往数据网格
这里就是我试图完成: 我有一个WPF数据网格绑定到数据库表,在datagrid内部有一个组合框(组ID)列绑定到数据库表中的一列;组合框项目来自另一个表格(组ID列表)。现在的问题是当组别ID列表从其他表更改时,组合框项不起作用。 任何人都可以帮忙吗?已经研究了很长时间。
这里是XAML代码:
<DataGridTemplateColumn Header="Group ID">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding GroupID, Mode=OneWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox Name="ComboBoxTeamGrpID" SelectedItem="{Binding GroupID, Mode=TwoWay}" ItemsSource="{StaticResource ResourceKey=GroupIDList}">
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
这里是GroupIDList代码:
public class GroupIDList : List<string>
{
public GroupIDList()
{
try
{
string tmp = ConfigurationManager.AppSettings["DataSvcAddress"];
Uri svcUri = new Uri(tmp);
JP790DBEntities context = new JP790DBEntities(svcUri);
var deviceQry = from o in context.Devices
where o.GroupID == true
select o;
DataServiceCollection<Device> cList = new DataServiceCollection<Device>(deviceQry);
for (int i = 0; i < cList.Count; i++)
{
this.Add(cList[i].ExtensionID.Trim());
}
this.Add("None");
//this.Add("1002");
//this.Add("1111");
//this.Add("2233");
//this.Add("5544");
}
catch (Exception ex)
{
string str = ex.Message;
}
}
}
Here is another problem related, can anyone help? thank you.
改为的ObservableCollection和的RelativeSource约束力,仍然没有运气,任何其他建议吗? 'ItemsSource =“{Binding RelativeSource = {RelativeSource AncestorType = {x:Type DatagridTemplateColumn}},Path = GroupIdList}”'GroupIDList在Windows.Resources'下 ... '谢谢。 –
Jeremy
您的'RelativeSource'绑定不正确。你指向'DataGridTemplateColumn.GroupIdList',它不存在。在任何ViewModel包含DataGrid的数据上创建一个属性,让它返回你的'ObservableCollection GroupIdList',然后让你的'RelativeSource'指向'DataGrid',其路径为'DataContext.MyGroupIdListProperty',这样就可以得到它的数据的完整路径是'DataGrid.DataContext.MyGroupIdListProperty' –
Rachel
我正在使用实体数据模型通过wcf数据服务来绑定数据,如果创建一个与数据匹配的新类是要走的路,那么它如何绑定到数据呢?对不起,如果问题很简单,我是新来的wpf。再次感谢你。 – Jeremy