【发布时间】:2016-01-25 23:04:54
【问题描述】:
我是 wpf 的新手,并且与这个问题斗争了好几天。我有一个组合框,其中包含数据视图作为项目源。它正确显示值,但当我重新运行应用程序时,selecteditem 始终为空。
combobox绑定的ChargeCodeValidValues对象:
public class ChargeCodeValidValues
{
#region Properties
public DataTable ChargeCodesValidValuesTable { get; set; }
public DataView dvChargeCodeValidValues { get; set; }
#endregion
#region Constructor
public ChargeCodeValidValues()
{
LoadChargeCodesValidValues();
}
public void LoadChargeCodesValidValues()
{
Database db = new Database();
DataTable dataTable = db.ExecuteQuery("upGet_ChargeCodesValidValues", "ChargeCodesValidValues", "ID");
this.ChargeCodesValidValuesTable = dataTable;
this.dvChargeCodeValidValues = ChargeCodesValidValuesTable.DefaultView;
}
XAML:
<DataTemplate x:Key="combodescriptionTemplate">
<ComboBox Name="cboCombo"
Loaded="cboCombo_Loaded">
<ComboBox.DataContext>
<Objects:ChargeCodeValidValues/>
</ComboBox.DataContext>
</ComboBox>
</DataTemplate>
<local:TotalCellTemplateSelector x:Key="totalcellTemplateSelector"
combodescriptionTemplate="{StaticResource combodescriptionTemplate}"/>
gridview 列:
<dxg:GridColumn Header="Description" FieldName="Description" Width="Auto" MinWidth="132" AllowMoving="False" CellTemplateSelector="{StaticResource totalcellTemplateSelector}" /> -->
此列默认为文本框。它根据其他列的值更改为组合框
代码:
private void cboCombo_Loaded(object sender, RoutedEventArgs e)
{
ComboBox cmb = sender as ComboBox;
DataTable dtChargeCodeValidValues = oChargeCodesValidvalues.ChargeCodesValidValuesTable.Copy();
DataView dvCurrentCodeValues = dtChargeCodeValidValues.Copy().DefaultView;
cmb.ItemsSource = dvCurrentCodeValues;
cmb.DisplayMemberPath = "Description";
cmb.SelectedValuePath = "Description";
cmb.SelectedValue = "Description";
}
【问题讨论】:
-
你熟悉
ObservableCollection and DataBinding那样wpflog.blogspot.com/2009/04/… -
不太熟悉。但我认为这个例子不适用于我的情况。
标签: c# wpf xaml binding combobox