C# 如何将所选项目从列表框绑定到组合框

C# 如何将所选项目从列表框绑定到组合框,c#,.net,wpf,combobox,binding,C#,.net,Wpf,Combobox,Binding,我有一个列表框,项目是动态生成的。我还有一个组合框 每个项都有一个名为“Name”的字符串属性 当我在列表框上选择此项目时,我想用列表框中所选项目的“名称”设置组合框的默认值或文本 我可以将其与“TextBlock”的“Text”属性绑定。但是我不能用ComboBox 这是我的密码: XAML 您可以将组合框上的ItemsSource属性设置为列表框中的SelectedItem。这不起作用,因为绑定项源必须是集合,在您的情况下,它是单个非集合项 假设您已将项资源绑定到一个集合,例如源列表。然后

我有一个
列表框
,项目是动态生成的。我还有一个
组合框

每个项都有一个名为“Name”的
字符串
属性

当我在
列表框
上选择此项目时,我想用
列表框
中所选项目的“名称”设置
组合框
的默认值或文本

我可以将其与“TextBlock”的“Text”属性绑定。但是我不能用
ComboBox

这是我的密码:

XAML



您可以将
组合框
上的
ItemsSource
属性设置为
列表框
中的
SelectedItem
。这不起作用,因为绑定项源必须是集合,在您的情况下,它是单个非集合项

假设您已将
项资源
绑定到一个集合,例如
源列表
。然后,您可以使用该属性在
组合框
中指定应用作标签的属性,此处为
名称

<ComboBox ItemsSource="{Binding SourceList}"
          SelectedItem="{Binding SelectedItem, ElementName=MyList}"
          DisplayMemberPath="Name">

如果编辑是您的需求的一个问题,那么您可以看看这个。有一些解决方法,但它们非常复杂,也有一些缺点。

ComboBox.ItemsSource
是用于填充ComboBox项的可枚举项。SelectedItem可能不是可枚举的,或者?因此我只是在viewmodel上创建了一个新列表,并与Combobox Itemsource绑定,对于默认值,我使用文本属性绑定SelectedItem.Name。
<ComboBox ItemsSource="{Binding SourceList}"
          SelectedItem="{Binding SelectedItem, ElementName=MyList}"
          DisplayMemberPath="Name"
          IsEditable="True">