我是WPF的新手,正在尝试弄清所有这些数据绑定的东西。当我在代码中执行以下操作时,在运行应用程序时将填充ComboBox:

public NewForm()
{
    InitializeComponent();
    Product.ItemsSource = Products;
}

public List<string> Products
{
    get { return _productsComponents.Keys.ToList(); }
}


但是,当我具有以下内容时,在我的XAML中,运行应用程序时ComboBox中没有内容:

<ComboBox Height="23" HorizontalAlignment="Left" Margin="138,116,0,0"
          Name="Product" VerticalAlignment="Top" Width="120"
          ItemsSource="{Binding Path=Products}"/>


我引用的内容有误吗? This tutorial很有帮助,但他从未在XAML中始终使用C#设置ItemsSource。

最佳答案

默认情况下,实际上不是绑定到表单本身,而是绑定到分配给DataContext属性的对象。这有助于使用视图模型来管理代码隐藏文件之外的所有数据。

您可能可以将表单本身分配给构造函数中的DataContext属性

DataContext = this;


您还可以通过几种方式中的任何一种来绑定到表单。这是一个:

<Window x:Name="thisWindow" …
    <ComboBox ItemsSource="{Binding Path=Products, ElementName=thisWindow}"…


我认为在这里Products不必是DependencyProperty,但不要在此引用我的名字,只要收藏集不更改,您就不必担心更新通知。

关于c# - WPF新手-在XAML中设置ItemsSource似乎不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3372363/

10-09 05:59