我有一个组合框标记为:
<ComboBox x:Name="TitleCombo"
Width="100"
Height="20"
DisplayMemberPath="TITLE_NAME"
SelectedValuePath="TITLE_CODEID"
DataContext="{Binding}"
ItemsSource="{Binding Path=Titles}" />
它是上的唯一控件NoticeWindow.xaml
,其背后有以下代码:
public partial class NoticeWindow : Window
{
private readonly Xt900Context _dbContext = new Xt900Context();
public NoticeWindow()
{
InitializeComponent();
var tits = _dbContext.TITLEs.ToList();
Titles = new ObservableCollection<TITLE>(tits);
DataContext = this;
TitleCombo.ItemsSource = Titles;
}
ObservableCollection<TITLE> Titles { get; set; }
}
如果没有该TitleCombo.ItemsSource = Titles
语句,则ComboBox保持空白。为什么是这样?
在您提供给我们的代码中,您ObservableCollection<TITLE> Titles { get; set; }
的定义为private
(未定义任何访问修饰符,并且private
是默认的)。
鉴于WPF数据绑定仅适用于公共属性(请参阅MSDN相关文档),它可以解释为什么绑定无法正常工作,并且您需要显式设置ItemsSource
in代码以填充ComboBox
。
用作绑定的绑定源属性的属性必须是您的类的公共属性。出于绑定目的,不能访问显式定义的接口属性,也不能访问没有基本实现的受保护的,私有的,内部的或虚拟的属性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句