WPF Databinding组合框到列表<string> </string>

时间:2011-07-28 05:02:21

标签: c# wpf xaml data-binding combobox

我很难通过XAML尝试将我的属性List绑定到我的组合框。

public List<string> MyProperty  { get; set; }

以下XAML绑定不起作用:

<ComboBox Name="cboDomainNames" ItemsSource="{Binding Path=MyProperty}"/> 

但是以下任务:

cboDomainNames.ItemsSource = MyProperty;

完美无缺。我在这里缺少什么?

3 个答案:

答案 0 :(得分:8)

发回我的评论以标记答案。

我的DataContext已设置,但它是在InitializeComponent()之后设置的。我认为这可能是问题所在。然后我意识到,当我通过xaml绑定时,当视图加载时,绑定发生在属性为空。

当视图在加载后准备好(即在_presenter.OnViewReady()上)时,属性会被填充。由于它不是一个可观察的集合,所以没有任何东西被添加到组合框中。从我的代码背后指定它起作用,因为那时数据存在于属性中。

答案 1 :(得分:7)

假设您的窗口/页面中有一个名为List<Foo>的{​​{1}}。 Foos有一个属性Foo。现在,您可以按如下方式在XAML中设置绑定:

Name

这基于this SO questionRead this(WPF DataBinding概述)作为WPF中数据绑定的良好基础。

答案 2 :(得分:-1)

如果您没有指定除路径之外的任何内容,则绑定将容器DataContext视为源。顺便说一句,有用的属性是在容器(例如窗口)上定义的。

您可以按照以下方式解决(在xaml中):

ItemsSource="{Binding Path=MyProperty, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}"