我有一个小测试窗口,如下所示:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ComboBox x:Name="Combo" DisplayMemberPath="Word" ItemsSource="{Binding Numbers}" HorizontalAlignment="Left" Margin="115,27,0,0" VerticalAlignment="Top" Width="120" />
</Grid>
</Window>
使用代码隐藏:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Numbers = new ObservableCollection<NumberWord>
{
new NumberWord {Number = 1, Word = "One"},
new NumberWord {Number = 2, Word = "Two"},
new NumberWord {Number = 3, Word = "Three"}
};
Combo.ItemsSource = Numbers;
}
public ObservableCollection<NumberWord> Numbers { get; set; }
}
我一直看到我的其他绑定问题的答案,这些问题表明Combo.ItemsSource = Numbers;
不需要显式设置,因为我有绑定ItemsSource="{Binding Numbers}"
。我也被多次告知我不需要设置一个DataContext
onCombo
因为整个窗口都是数据上下文,并且Combo
继承了这个数据上下文。
我的问题是,为什么我总是——不仅仅是这个组合——ItemsSource
在代码后面显式地设置或其他绑定属性。为什么 XAML 数据绑定不起作用?