【问题标题】:WPF ComboBox setting the selected valueWPF ComboBox 设置选定值
【发布时间】:2019-04-09 18:35:55
【问题描述】:

不知道为什么我不能让它工作。我在 WPF 中有一个组合框。想要遍历所有控件并在满足条件的地方设置为活动状态。我找到了匹配项,但似乎无法设置值。此示例仿照“选择值”方法...Set SelectedItem of WPF ComboBox

 bool match = false;
            foreach (ComboBoxItem cbi in cb_Divisinos.Items)
            {
                if (cbi.Content.ToString().Split('-')[0].Trim() == family.Division.ToString()) {
                    cb_Divisinos.SelectedValue = cbi.Content.ToString();
                    match = true;
                }
            }

【问题讨论】:

    标签: wpf combobox


    【解决方案1】:

    如果我能看到您的 XAML,那会很有帮助,但如果我不得不猜测,我会说您很可能没有在 XAML 中的 ComboBox 元素上设置 SelectedValuePath。

    <ComboBox Grid.Row="1" Grid.Column="0" 
              Name="combo" SelectedValuePath="Content">
    

    为了让这个过程正常工作,项目也应该在 XAML 中定义,而不是通过绑定项目源。如果您要绑定到 Items Source,则需要改用 SelectedItem 方法。

    如果我目前可以将此作为评论,我会这样做,但可惜我创建了一个更新的个人资料,但我不能。

    【讨论】:

      【解决方案2】:

      如果您的ComboBox 明确填充有ComboBoxItems,如下所示:

      <ComboBox x:Name="cb_Divisinos">
          <ComboBoxItem>Division A - xyz</ComboBoxItem>
          <ComboBoxItem>Division B - abc</ComboBoxItem>
      </ComboBox>
      

      ...您可以简单地将SelectedItem 属性设置为您要选择的 ComboBoxItem:

      bool match = false;
      foreach (ComboBoxItem cbi in cb_Divisinos.Items)
      {
          if (cbi.Content.ToString().Split('-')[0].Trim() == family.Division.ToString())
          {
              cb_Divisinos.SelectedItem = cbi;
              match = true;
              break;
          }
      }
      

      【讨论】:

        【解决方案3】:

        另一种更适合我的方法是使用 SelectedIndex 选择项目,如下所示:

        bool match = false;
        int selectedIndexNumber = 0;
                    foreach (ComboBoxItem cbi in cb_Divisinos.Items)
                    {
                        if (cbi.Content.ToString().Split('-')[0].Trim() == family.Division.ToString()) {
                            cb_Divisinos.SelectedValue = cbi.Content.ToString();
                            match = true;
                            break;
                        }
                            selectedIndexNumber += 1;
        
                    }
        

        然后应用 selectedindex 像...

        cb_Divisinos.SelectedIndex = selectedIndexNumber;
        

        在 ComboBox 中设置 SelectedIndex 的 Binding...

        <ComboBox Name="cb_Divisinos" ItemsSource="{Binding }"
                  DisplayMemberPath="Name"
                  SelectedValuePath="CategoryID" SelectedIndex="{Binding Mode=OneWay}">
        </ComboBox>
        
        

        您不需要为 SelectedIndex Binding 指定值或字段名;就像我上面显示的那样设置它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-10
          • 1970-01-01
          • 2020-12-24
          • 2018-12-26
          • 1970-01-01
          • 2023-03-09
          相关资源
          最近更新 更多