我有两个窗口充当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
被选中,但如果我将其返回阿拉伯语,则无法找到。
答案 0 :(得分:0)
正如Usama所说,你的方法感觉不对。因为这种方法确实会产生问题。如果您想保持基本想法,请执行以下操作:
1:在代码中创建4个字符串(组合框项目)的列表
2:将此列表分配给组合框的Items属性
现在您可以根据自己的列表进行字符串比较,并设置SelecetIndex(而不是SeletectItem)属性。