C# 绑定到组合框的ObservableCollection

C# 绑定到组合框的ObservableCollection,c#,wpf,observablecollection,C#,Wpf,Observablecollection,我创建ObservableCollection: public ObservableCollection<Tool> toolList = new ObservableCollection<Tool>(); 实际: public MainWindow() { InitializeComponent(); DataContext = this; } 公开名单: public ObservableCollec

我创建ObservableCollection:

public ObservableCollection<Tool> toolList = new ObservableCollection<Tool>();
实际:

    public MainWindow()
    {

       InitializeComponent();
       DataContext = this;

    }
公开名单:

    public ObservableCollection<Tool> ToolList
   {
       get { return toolList; }
   }
我希望组合框上只显示Toolobject的名称。XAML:

 <ComboBox ItemsSource="{Binding Path= ToolList}" DisplayMemberPath="Name" 
 SelectedValuePath ="Name" SelectedValue="{Binding Path=ToolList}" Height="22" 
 Name="comboBoxTools" Width="185" IsEditable="False" />
我在组合框里什么也没看到。为什么?这些工具已成功添加到集合中。
我很生气试着在你的项目资源绑定中将
UpdateSourceTrigger
设置为
PropertyChanged
试着在你的项目资源绑定中将
UpdateSourceTrigger
设置为
PropertyChanged

试着在你的项目资源绑定中将
UpdateSourceTrigger
设置为
PropertyChanged
ItemsSource Binding

尝试将ItemsSource Binding中的
UpdateSourceTrigger
设置为
PropertyChanged
您已将窗口的DataContext设置为
ObservableCollection
本身

因此,要么将ItemsSource与DataContext本身绑定,因为绑定将自动指向List实例

<ComboBox ItemsSource="{Binding}"/>

此外,
SelectedValue
仅指向列表。那没有任何意义。如果未使用
SelectedValuePath
,则应指向类工具的实例。在使用SelectedValuePath的情况下,它应该指向string类型的属性


要么将其完全删除,要么将其设置为类中的适当实例。

您已将窗口的DataContext设置为
ObservableCollection
本身

因此,要么将ItemsSource与DataContext本身绑定,因为绑定将自动指向List实例

<ComboBox ItemsSource="{Binding}"/>

此外,
SelectedValue
仅指向列表。那没有任何意义。如果未使用
SelectedValuePath
,则应指向类工具的实例。在使用SelectedValuePath的情况下,它应该指向string类型的属性


要么将其完全删除,要么将其设置为类中的适当实例。

您已将窗口的DataContext设置为
ObservableCollection
本身

因此,要么将ItemsSource与DataContext本身绑定,因为绑定将自动指向List实例

<ComboBox ItemsSource="{Binding}"/>

此外,
SelectedValue
仅指向列表。那没有任何意义。如果未使用
SelectedValuePath
,则应指向类工具的实例。在使用SelectedValuePath的情况下,它应该指向string类型的属性


要么将其完全删除,要么将其设置为类中的适当实例。

您已将窗口的DataContext设置为
ObservableCollection
本身

因此,要么将ItemsSource与DataContext本身绑定,因为绑定将自动指向List实例

<ComboBox ItemsSource="{Binding}"/>

此外,
SelectedValue
仅指向列表。那没有任何意义。如果未使用
SelectedValuePath
,则应指向类工具的实例。在使用SelectedValuePath的情况下,它应该指向string类型的属性


要么完全删除,要么将其设置为类中的适当实例。

< P>好的,我在YouTube上找到了一个简单的解决方案(与HT195367的Windows预处理基金会的数据绑定)。我没有在Xaml中定义comboBox.ItemsSource,而是在Window_中定义

comboBoxTools.ItemsSource = toolList;
对于显示我在工具类中实现ToString的工具的名称:

public override string ToString()
{
        return Name;

}

好的,我在YouTube上找到了一个简单的解决方案(与HT195367的Windows预设基金会的数据绑定)。我没有在Xaml中定义comboBox.ItemsSource,而是在Window_中定义

comboBoxTools.ItemsSource = toolList;
对于显示我在工具类中实现ToString的工具的名称:

public override string ToString()
{
        return Name;

}

好的,我在YouTube上找到了一个简单的解决方案(与HT195367的Windows预设基金会的数据绑定)。我没有在Xaml中定义comboBox.ItemsSource,而是在Window_中定义

comboBoxTools.ItemsSource = toolList;
对于显示我在工具类中实现ToString的工具的名称:

public override string ToString()
{
        return Name;

}

好的,我在YouTube上找到了一个简单的解决方案(与HT195367的Windows预设基金会的数据绑定)。我没有在Xaml中定义comboBox.ItemsSource,而是在Window_中定义

comboBoxTools.ItemsSource = toolList;
对于显示我在工具类中实现ToString的工具的名称:

public override string ToString()
{
        return Name;

}


您的
SelectedValue
绑定到与
ItemsSource
相同的路径。这似乎有点可疑。我删除了所选值和所选路径,但这并没有解决问题:/Your
SelectedValue
绑定到与您的
ItemsSource
使用的路径相同。这似乎有点可疑。我删除了所选值和所选路径,但这并没有解决问题:/Your
SelectedValue
绑定到与您的
ItemsSource
使用的路径相同。这似乎有点可疑。我删除了所选值和所选路径,但这并没有解决问题:/Your
SelectedValue
绑定到与您的
ItemsSource
使用的路径相同。这似乎有点可疑。我删除了Selected Value和Selected Path,但这并不能解决问题:/他无法从第一个提案中获得解决方案,因为他对SelectedValue的绑定也是错误的。您的第二种方法是正确的,将
DataContext
设置为
this
,并将
SelectedValue
更改为另一个属性(我们还不知道)。@Herm-首先,他将在comboBox中填充项。而
SelectedValue
部分是针对两种解决方案的,而不是针对第二种解决方案。是的,我只想提到的是,在第一次绑定(将DataContext设置为列表)时,将SelectedValue绑定到
MainWindow
的另一个属性会很麻烦,这在第二种解决方案中肯定更容易。当然,第一个方案将正确地填充列表。好的,我更改了数据上下文并更正了xaml:@LittleProgrammer-属性是否仅存在于代码隐藏中?他不会得到第一个方案的解决方案,因为他对SelectedValue的绑定也是错误的。第二种方法是正确的,将
DataContext
设置为
this
,并将
SelectedValue
更改为另一个属性(我们还不知道)。@Herm-