我正在用C#,.NET框架4.5.1,MVVM Light框架和实体框架6.1.3开发一个WPF。
我在一个窗口中有这个DataGrid:
<DataGrid x:Name="LevelConfigurationDataGrid" Grid.Column="1" Grid.Row="1" Margin="20,0" ItemsSource="{Binding LevelConfigs}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding CODE_LEVEL}" Header="Nivel"/>
<DataGridTextColumn Binding="{Binding LEVEL_NAME}" Header="Nombre"/>
<DataGridCheckBoxColumn Binding="{Binding IS_ACTIVE}" Header="¿Activa?"/>
<DataGridComboBoxColumn Header="Tipo de código" SelectedValueBinding="{Binding CODE_TYPE}" SelectedItemBinding="{x:Null}" TextBinding="{x:Null}"/>
<DataGridComboBoxColumn Header="Origen del código" SelectedValueBinding="{Binding CODE_SOURCE}" SelectedItemBinding="{x:Null}" TextBinding="{x:Null}"/>
<DataGridComboBoxColumn Header="Tipo de Helper Code" SelectedValueBinding="{Binding HELPER_CODE_TYPE}" SelectedItemBinding="{x:Null}" TextBinding="{x:Null}"/>
<DataGridComboBoxColumn Header="Origen de Helper Code" SelectedValueBinding="{Binding HELPER_CODE_SOURCE}" SelectedItemBinding="{x:Null}" TextBinding="{x:Null}"/>
<DataGridTextColumn Binding="{Binding QUANTITY}" Header="Cantidad"/>
<DataGridTextColumn Binding="{Binding REMAINING_CODES}" Header="Restantes"/>
<DataGridTextColumn Binding="{Binding TRZ_ENDPOINT}" Header="TRZ IP"/>
<DataGridTextColumn Binding="{Binding TRZ_ENDPORT}" Header="TRZ Puerto"/>
</DataGrid.Columns>
</DataGrid>在MainViewModel上
public ObservableCollection<CODE_LEVEL_CONFIGURATION> LevelConfigs
{
get { return m_LevelConfigs; }
set
{
m_LevelConfigs = value;
RaisePropertyChanged("LevelConfigs");
}
}在CODE_LEVEL_CONFIGURATION上
public class CODE_LEVEL_CONFIGURATION
{
public byte CODE_LEVEL { get; set; }
public string LEVEL_NAME { get; set; }
public bool IS_ACTIVE { get; set; }
public byte CODE_TYPE { get; set; }
public byte CODE_SOURCE { get; set; }
public byte? HELPER_CODE_TYPE { get; set; }
public byte? HELPER_CODE_SOURCE { get; set; }
public int QUANTITY { get; set; }
public int REMAINING_CODES { get; set; }
public string TRZ_ENDPOINT { get; set; }
public int? TRZ_ENDPORT { get; set; }
}但当我运行这个应用程序时,我在DataGridComboBoxColumn上看不到任何东西。
我不知道如何设置TextBinding属性。
CODE_LEVEL_CONFIGURATION.CODE_TYPE值是一个ID。我需要为每个可能的值显示一个描述性文本。而且,当我获得这个值时,我需要获取它的ID,以便将它存储在数据库中。
我是否需要一个enum或其他东西来获取每个CODE_TYPE值的文本?
发布于 2015-05-25 17:57:46
这是因为您没有设置组合框的ItemsSource。你应该这样做:
<DataGridComboBoxColumn ItemsSource="{Binding Path=}" DisplayMemberPath="" SelectedItemBinding="{Binding Path=}"></DataGridComboBoxColumn>DisplayMemberPath定义要显示所选项目的哪个属性
使用SelectedItemBinding,您可以将所选项目绑定到视图模型中的属性。
如果只需要选定项的特定值,请使用SelectedValueBinding和SelectedValuePath。
发布于 2015-05-25 18:08:10
应该需要为combobox列设置itemssource,还需要绑定所选值路径以在ComboBox中查看所选值。
<DataGridComboBoxColumn SelectedValuePath="{Binding CODE_TYPE}" ItemsSource="{Binding LevelConfigs}"/>发布于 2015-05-25 18:30:25
是的,在ComboBoxColumn中使用SelectedValuePath和DisplayMemberPath是可能的。例如,您可以尝试维护两个属性(ID和Description),并为该类创建itemssource。现在将ItemsSource绑定到ComboBoxColumn,将SelectedValuePath定义为ID,将DisplayMemberPath定义为如下所示。
<DataGridComboBoxColumn SelectedValuePath="{Binding ID}" DisplayMemberPath="{Binding Description}" ItemsSource="{Binding SourceCollection}"/>https://stackoverflow.com/questions/30435413
复制相似问题