WPF将comboBox绑定到List <string>

时间:2018-02-28 13:01:27

标签: c# wpf data-binding

我尝试以编程方式生成组合框项目。我对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}"无法识别

2 个答案:

答案 0 :(得分:4)

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

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

您的视图模型应该有一个公共属性List<string>,它返回ItemsSource="{Binding Statuses}"

然后在XAML中,您可以声明Statuses

ObservableCollection<string>也可以声明为{{1}},以防您在添加或删除元素时更新用户界面。

答案 1 :(得分:1)

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

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

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

local是名称空间的别名,其中声明了StatusListlocal应使用xmlns

在xaml中声明