組合框的項目並不反映其源所做的更改源的其他變化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