C# 设置组合框的selectedValue

C# 设置组合框的selectedValue,c#,wpf,xaml,data-binding,combobox,C#,Wpf,Xaml,Data Binding,Combobox,我有一个组合框“cbSkillLevel”,我将数据绑定到该组合框,如下所示,以填充列表。它很好用。我有一个包含项目的列表框,根据项目选择,我需要将不同的值设置为“cbSkillLevel”。如何将combobox的值设置为所需的值 我试过的是贝娄 非常感谢你的帮助 <ComboBox Grid.Column="3" x:Name="cbSkillLevel" Margin="0,0,10,0" IsEnabled="{Binding ElementName=SkillsPage, Pa

我有一个组合框“cbSkillLevel”,我将数据绑定到该组合框,如下所示,以填充列表。它很好用。我有一个包含项目的列表框,根据项目选择,我需要将不同的值设置为“cbSkillLevel”。如何将combobox的值设置为所需的值

我试过的是贝娄

非常感谢你的帮助

 <ComboBox Grid.Column="3" x:Name="cbSkillLevel" Margin="0,0,10,0" IsEnabled="{Binding ElementName=SkillsPage, Path=setIsEnabled, Mode=OneWay}">
     <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock FontSize="26" Foreground="Black" Text="{Binding Value}" />
        </DataTemplate>
     </ComboBox.ItemTemplate>
 </ComboBox>

List<Lookup> skillLevel = dbOperation.getLookupData("Skill_Level");
cbSkillLevel.ItemsSource = skillLevel;


private void lbSkills_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
   clearFields();
   clearTopicsForm();
   var skillobj = (lbSkills.SelectedItem as Skill);

   if (skillobj != null)  
   { 
       selected_SkillDescription = skillobj.SkillDescription;
       tbNotes.Text = skillobj.Notes;
       tbDescription.Text = selected_SkillDescription;
       /*I TRIED THE BELLOW OPTION BUT DID NOT WORK.*/
       //cbSkillLevel.SelectedItem = skillobj.SkillLevel;
       //cbSkillLevel.SelectedIndex = cbSkillLevel.Items.IndexOf(skillobj.SkillLevel.ToString());                
       //cbSkillLevel.SelectedIndex = 1;
       //cbSkillLevel.ItemsSource = tempListSkillLevel;
       cbSkillLevel.SelectedValue = skillobj.SkillLevel.ToString();
       cbSkillType.SelectedItem = skillobj.SkillType;
       tbWarningWeeks.Text = skillobj.WarningWeeks.ToString();
       dpValidFrom.Date = skillobj.ValidFrom;
       dpValidUntil.Date = skillobj.ValidUntil;
       /*load topics for this skill*/
       loadTopicsFromDB(skillobj.SkillDescription);
       //set the fields as read only
       setIsEnabled = false;
       addEditButton();            
     }
  }

SelectedItem可能不起作用,因为这些对象是在不同列表中创建的不同物理对象。 使用{Binding Value}不是问题,这只是对象的视觉表示,与选择无关。您需要做的事情是告诉组合框该对象上的“SelectedValue”是什么值。这是在XAML中完成的,并且建议使用Value,因为它将与您的对象统一(?)


ItemSource是一个查找列表,因此设置“selected”的唯一方法也必须是查找类型

cbSkillLevel.SelectedValue = skillobj.SkillLevel.ToString();
仅当您已经使用建立了ItemSource时,此选项才起作用

IEnumerable<string>
IEnumerable

ComboBox是一个ItemsControl。您可以在此处看到详细信息

将DisplayMemberPath和SelectedValuePath添加到xaml绑定中,即DisplayMemberPath是应该向用户显示对象的属性,SelectedValuePath是它在内部选择的属性,因此类似于此,例如,如果我想将我的水果集合绑定到combobox,我想显示水果名称,但选择它的id,这样我的属性将

 DisplayMemberPath = "FruitName"
 SelectedValuePath = "FruitId"

稍后在selectionchanged事件中,您可以使用cbSkillLevel.SelectedValue设置其值。在我们的示例中,它将是水果id,因为我们将其绑定为SelectedValuePath。

Hi“Value”对这两个对象不是唯一的,在查找对象中它是“Value”,在技能中它是“SkillLevel”。这就是为什么我不知道怎么做的原因,LookupId是识别器吗?不管是什么,他们有一个共同的或创建一个新的属性,如果需要的话(可以包括来自其他属性的数据,pref.read only)。并在我的两个代码段上使用它,而不是“Value”。它们之间没有共同的键,我不能添加任何属性,因为这将是表结构。SkillLevel类是什么样子的?它是如何映射到查找的,如果它们“相同”,那么哪些值是相同的?嗨,这里没有技能等级,有技能等级和查找等级。我正在将组合框的项目源设置为查找数据。设置selectedValue时,我试图从skillLevel等于Lookup object中某个项目的skillLevel的Skill对象中设置。在selected changed中,我获取了另一个Lookup类型的列表(组合框正在查找的一个),并从skillObj中添加了“Value”字段。然后我尝试设置所选的值,但仍然不起作用。类似于此的列表tempListSkillLevel=new List();添加(新查找{Value=skillobj.SkillLevel});然后cbSkillLevel.SelectedValue=tempListSkillLevel[0];但是always selectedvalue在selected changed中显示为Null我选择了另一个查找类型的列表(一个组合框正在查找),并从skillObj中添加了“Value”字段。然后我尝试设置所选的值,但仍然不起作用。类似于此的列表tempListSkillLevel=new List();添加(新查找{Value=skillobj.SkillLevel});然后cbSkillLevel.SelectedValue=tempListSkillLevel[0];但在您的示例中,always selectedvalue显示为nullHi FruiName和FruitId是否属于同一对象?在我的例子中,对象查找的itemSource和我试图设置的selectedValue具有不同的对象技能。有什么想法吗?
cbSkillLevel.SelectedValue = skillobj.SkillLevel.Value;
cbSkillLevel.SelectedValue = skillobj.SkillLevel.ToString();
IEnumerable<string>
 DisplayMemberPath = "FruitName"
 SelectedValuePath = "FruitId"