WPF将comboBox绑定到List

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF将comboBox绑定到List相关的知识,希望对你有一定的参考价值。

我正在尝试以编程方式生成组合框项目。我对WPF很新,不明白我在哪里弄错了。

这是我的List<string>

public class StatusList : List<string>
{
    public StatusList()
    {
        this.Add("aaa");
        this.Add("bbb");
        this.Add("ccc");
        this.Add("ddd");
    }
}

而我正试图展示这些项目

<DataTemplate>
    <ComboBox Height="22" ItemsSource="{StaticResource StatusList}" SelectedItem="{Binding Status}" />
</DataTemplate>

ItemsSource="{StaticResource StatusList}"不被承认

答案

您需要首先设置MainWindow的DataContext属性,该属性将为未明确设置源的任何Bindings提供默认源对象(通过设置Source,RelativeSource或ElementName)。

DataContext持有的对象通常称为视图模型。

你的视图模型应该有一个公共属性Statuses,它返回一个List<string>

然后在XAML中你可以声明ItemsSource="{Binding Statuses}"

Statuses也可以声明为ObservableCollection<string>,以防您在添加或删除元素时更新UI。

另一答案

{StaticResource StatusList} - StatusList这里不是类型名称,它是一个资源键。

要使{StaticResource}工作,应该在某处定义:

<Window.Resources>
   <local:StatusList x:Key="StatusList"/>
</Window.Resources>

local是声明StatusList的命名空间的别名。 local应该使用xmlns在xaml中声明

以上是关于WPF将comboBox绑定到List的主要内容,如果未能解决你的问题,请参考以下文章

WPF ComboBox ItemTemplate 绑定到字符串集合

WPF Combobox数据绑定Binding

WPF ComboBox 绑定 ItemsSource

如何将通用项目添加到绑定到 WPF 中的集合的 ComboBox

WPF 将集合绑定到 ComboBox 并选择一个项目

WPF - Combobox SelectedItem 未设置?