我很难通过XAML尝试将我的属性List绑定到我的组合框。
public List<string> MyProperty { get; set; }
以下XAML绑定不起作用:
<ComboBox Name="cboDomainNames" ItemsSource="{Binding Path=MyProperty}"/>
但是以下任务:
cboDomainNames.ItemsSource = MyProperty;
完美无缺。我在这里缺少什么?
答案 0 :(得分:8)
发回我的评论以标记答案。
我的DataContext已设置,但它是在InitializeComponent()之后设置的。我认为这可能是问题所在。然后我意识到,当我通过xaml绑定时,当视图加载时,绑定发生在属性为空。
当视图在加载后准备好(即在_presenter.OnViewReady()上)时,属性会被填充。由于它不是一个可观察的集合,所以没有任何东西被添加到组合框中。从我的代码背后指定它起作用,因为那时数据存在于属性中。
答案 1 :(得分:7)
假设您的窗口/页面中有一个名为List<Foo>
的{{1}}。 Foos
有一个属性Foo
。现在,您可以按如下方式在XAML中设置绑定:
Name
这基于this SO question。 Read this(WPF DataBinding概述)作为WPF中数据绑定的良好基础。
答案 2 :(得分:-1)
如果您没有指定除路径之外的任何内容,则绑定将容器DataContext视为源。顺便说一句,有用的属性是在容器(例如窗口)上定义的。
您可以按照以下方式解决(在xaml中):
ItemsSource="{Binding Path=MyProperty, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}"