我是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/