按值查找WPF ComboBoxItem,然后将其设置为SelectedItem

时间:2018-03-01 01:02:23

标签: c# wpf

我有两个窗口充当CRUD,两个都有相同的ComboBox项:

<ComboBox x:Name="LessonTypeNameText" materialDesign:HintAssist.Hint="نوع الدرس و الموضوع"  Style="{StaticResource MaterialDesignFloatingHintComboBox}" >
     <ComboBoxItem>السنة الأولى: من هدي القرآن الكريم  == من دلائل القدرة ( الأنعام: 95 ـ 99).</ComboBoxItem>
     <ComboBoxItem>السنة الأولى: من هدي القرآن الكريم == الوصايا العشر ( الأنعام: 151 ـ 152).</ComboBoxItem>
     <ComboBoxItem>السنة الأولى: من هدي القرآن الكريم == صفات عباد الرحمن ( الفرقان: 63 ـ 77).</ComboBoxItem>
     <ComboBoxItem>السنة الأولى: من هدي القرآن الكريم == الوصايا العشر ( الأنعام: 151 ـ 152).</ComboBoxItem>
</ComboBox>

现在,如果从数据库中提取数据以填充第一个编辑窗口,ComboBox将根据数据库中的值选择索引,但第二个窗口ComboBox不会选择索引。 经过一番挖掘后,我发现在第二个窗口中比较失败了,我试着看看是否有隐藏的角色但是没有。

private void KafaaOstadiaWindow_Loaded(object sender, System.Windows.RoutedEventArgs e)
    {
        try
        {
            _reportDetails = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(_KafaaReport[1]);
        }
        catch (Newtonsoft.Json.JsonException ee)
        {
            MessageBox.Show(ee.ToString());
        }
        //MessageBox.Show(_reportDetails["teacherId"]);
        ComboBoxItem comboBoxItem = null;

        comboBoxItem = sifaTeacher01ComboBox.Items.OfType<ComboBoxItem>().FirstOrDefault(x => x.Content.ToString() == _reportDetails["sifaTeacher01"].ToString());
        sifaTeacher01ComboBox.SelectedIndex = sifaTeacher01ComboBox.Items.IndexOf(comboBoxItem);

        schoolTeacher01Text.Text = _reportDetails["schoolTeacher02"];

        //MessageBox.Show(_reportDetails["LessonTypeName01"].ToString());

        comboBoxItem = LessonTypeNameText.Items.OfType<ComboBoxItem>().FirstOrDefault(x => x.Content.ToString() == _reportDetails["LessonTypeName01"].ToString());
        LessonTypeNameText.SelectedIndex = LessonTypeNameText.Items.IndexOf(comboBoxItem);
    }

这是数据库中的值:

السنة الأولى: من هدي القرآن الكريم == صفات عباد الرحمن ( الفرقان: 63 ـ 77).

应该选择索引2但不是,所有其他组合的工作正常。我在这里缺少什么?

更新

如果内容是英语或拉丁语,则ComboBoxItem被选中,但如果我将其返回阿拉伯语,则无法找到。

1 个答案:

答案 0 :(得分:0)

正如Usama所说,你的方法感觉不对。因为这种方法确实会产生问题。如果您想保持基本想法,请执行以下操作:

1:在代码中创建4个字符串(组合框项目)的列表

2:将此列表分配给组合框的Items属性

现在您可以根据自己的列表进行字符串比较,并设置SelecetIndex(而不是SeletectItem)属性。