首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataGridComboBoxColumn:如何设置TextBinding

DataGridComboBoxColumn:如何设置TextBinding
EN

Stack Overflow用户
提问于 2015-05-25 17:44:38
回答 3查看 1K关注 0票数 1

我正在用C#,.NET框架4.5.1,MVVM Light框架和实体框架6.1.3开发一个WPF。

我在一个窗口中有这个DataGrid

代码语言:javascript
复制
<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

代码语言:javascript
复制
public ObservableCollection<CODE_LEVEL_CONFIGURATION> LevelConfigs
{
    get { return m_LevelConfigs; }
    set
    {
        m_LevelConfigs = value;
        RaisePropertyChanged("LevelConfigs");
    }
}

CODE_LEVEL_CONFIGURATION

代码语言:javascript
复制
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值的文本?

EN

回答 3

Stack Overflow用户

发布于 2015-05-25 17:57:46

这是因为您没有设置组合框的ItemsSource。你应该这样做:

代码语言:javascript
复制
<DataGridComboBoxColumn ItemsSource="{Binding Path=}" DisplayMemberPath="" SelectedItemBinding="{Binding Path=}"></DataGridComboBoxColumn>

DisplayMemberPath定义要显示所选项目的哪个属性

使用SelectedItemBinding,您可以将所选项目绑定到视图模型中的属性。

如果只需要选定项的特定值,请使用SelectedValueBindingSelectedValuePath

票数 0
EN

Stack Overflow用户

发布于 2015-05-25 18:08:10

应该需要为combobox列设置itemssource,还需要绑定所选值路径以在ComboBox中查看所选值。

代码语言:javascript
复制
<DataGridComboBoxColumn SelectedValuePath="{Binding CODE_TYPE}" ItemsSource="{Binding LevelConfigs}"/>
票数 0
EN

Stack Overflow用户

发布于 2015-05-25 18:30:25

是的,在ComboBoxColumn中使用SelectedValuePath和DisplayMemberPath是可能的。例如,您可以尝试维护两个属性(ID和Description),并为该类创建itemssource。现在将ItemsSource绑定到ComboBoxColumn,将SelectedValuePath定义为ID,将DisplayMemberPath定义为如下所示。

代码语言:javascript
复制
<DataGridComboBoxColumn SelectedValuePath="{Binding ID}" DisplayMemberPath="{Binding Description}"   ItemsSource="{Binding SourceCollection}"/>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30435413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档