WPF将comboBox绑定到List

问题描述 投票:1回答:2

我正在尝试以编程方式生成组合框项目。我对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}"不被承认

c# wpf data-binding
2个回答
4
投票

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

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

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

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

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


1
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.