【发布时间】:2017-09-06 13:40:14
【问题描述】:
我正在尝试使用ComboBox 绑定到CostCodes 列表。一条名为SelectedRecord 的记录被传入以进行编辑,我希望发生两件事。首先,我希望ComboBox 选择已经应用于SelectedRecord 的CostCode。然后,我希望用户能够编辑 CostCode,以便他们可以将 SelectedRecord 分配给其他用户。
我已经成功地将我的ComboBox 绑定到ObservableCollection<CostCode>,但是当用户加载Window 时,已经分配给SelectedRecord 的CostCode 不会在ComboBox 中自动选择。这是 XAML:
<TextBox Grid.Row="3" Grid.Column="1" Text="{Binding SelectedRecord.Provider}"/>
<TextBox Grid.Row="4" Grid.Column="1" Text="{Binding SelectedRecord.Number}"/>
<ComboBox Grid.Row="5" Grid.Column="1"
ItemsSource="{Binding AllCostCodes}"
DisplayMemberPath="Text">
</ComboBox>
我尝试过使用SelectedValue 和SelectedValuePath,但没有成功。尽管用户能够编辑并且当用户单击ComboBox 时CostCodes 正确显示,但已分配给SelectedRecord 的CostCode 不会显示。我包含了几个 TextBoxes 来展示我如何绑定到它们,我实际上想对它们的 Text 属性做同样的事情,但用 ComboBox 代替。
编辑:CostCode.cs
public partial class CostCode
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public CostCode()
{
this.PhoneRecords = new HashSet<PhoneRecord>();
}
public int Id { get; set; }
public string Text { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<PhoneRecord> PhoneRecords { get; set; }
}
PhoneRecord.cs
public partial class PhoneRecord
{
public int Id { get; set; }
public Nullable<System.DateTime> DateGiven { get; set; }
public string PersonName { get; set; }
public Nullable<int> PhoneModelId { get; set; }
public Nullable<bool> NMU { get; set; }
public string IMEI { get; set; }
public string Number { get; set; }
public Nullable<int> CostCodeId { get; set; }
public Nullable<System.DateTime> DateReturned { get; set; }
public string WhyReturned { get; set; }
public string Solution { get; set; }
public string Internet { get; set; }
public string Provider { get; set; }
public string SpeedDial { get; set; }
public string OnDatabases { get; set; }
public string Notes { get; set; }
public virtual CostCode CostCode { get; set; }
public virtual PhoneModel PhoneModel { get; set; }
}
SelectedRecord 在DataGrid 的PhoneRecords 中选择,然后传递给EditWindow,我想在其中设置适用的CostCode。
【问题讨论】:
-
SelectedRecord.CostCode 是什么类型?是 CostCode 类吗? CostCode 类的成员有哪些?
-
SelectedRecord的类型为PhoneRecord。CostCode的类型为CostCode。每个PhoneRecord都分配有一个CostCode。 -
CostCode 类的成员有哪些?
-
Id和Text是属性。 -
请将您的代码发布到设置 SelectedRecord 的位置以及所有相关类型。