我尝试以编程方式生成组合框项目。我对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}"
无法识别
答案 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
是名称空间的别名,其中声明了StatusList
。 local
应使用xmlns