【问题标题】:Set Selected value on combobox in WPF在 WPF 中的组合框上设置选定值
【发布时间】:2020-04-08 05:48:14
【问题描述】:

我有一个带有组合框的简单 WPF; 当我使用新数组作为项目源(代码中的注释行)时,我可以通过设置SelectedValue="..."(来自另一个查询结果的字符串)来设置默认值。 但是当我使用查询并从数据库中读取时。添加项目有效,但设置 SelectedValue 作业不起作用!

我的xaml.cs 代码:

tempdbEntities mydb = new tempdbEntities();
public MainWindow()
{
    InitializeComponent();
    FillForm(1);
}

private void Window_Activated(object sender, EventArgs e)
{
    //cmbVendors.ItemsSource = new string[] { "ABC", "BCD", "EFG" };

    cmbVendors.ItemsSource = mydb.tbl_Company.Where(c => c.Id < 5).ToList();
    cmbVendors.DisplayMemberPath = "Name";    
}

private void FillForm(int ID0)
{    
    cmbVendors.SelectedValue = mydb.tbl_Company.Where(c => c.Id == ID0).Single().Name;    
}

Xaml 代码:

<Grid Margin="0,-41,0,0">
    <ComboBox Name="cmbVendors" HorizontalAlignment="Left" 
              Margin="474,102,0,0" VerticalAlignment="Top" 
              Width="231"/>    
</Grid>

【问题讨论】:

    标签: c# wpf combobox selectedvalue


    【解决方案1】:

    Combobox 的DisplayMemberPath 只会控制需要显示的内容; SelectedValue 仍然是您的 Model 类型。你需要设置

    cmbVendors.SelectedValuePath = "Name";
    

    这将确保您的cmbVendorsSelectedValue 将保持Name

    【讨论】:

      【解决方案2】:

      我想做什么: 这是一个编辑表格。 加载表单时,应通过表格中的数据填充表单、文本框、组合框...中的所有组件。 cmbVendors 和其他组件一样应该显示从 DB 获取的内容,如果用户想更改它,他可以做到。然后点击提交....

      我已将 FillForm 方法编辑如下:

      private void FillForm(int ID0)
              {
                  cmbVendors.SelectedValuePath = "Name";
                  cmbVendors.SelectedValue = mydb.tbl_Company.Where(c => c.Id == ID0).Single().Name;
      
              }
      

      谢谢。效果很好!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-23
        • 1970-01-01
        • 1970-01-01
        • 2011-06-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多