概述: 我已经将ComoboBox上的绑定设置为List属性。但是当我运行应用程序时,组合框中没有填充数据。
调试步骤:
我的想法是在调用setter后初始化列表。这意味着在该阶段绑定将为null,在组合框上调用绑定。
问题:
如何在调用QueryList setter之前调用我的列表的Init方法?
代码段:
代码背后 -
//The binding property for the combo box
private List<string> _queryList;
public List<string> QueryList
{
get
{
return this._queryList;
}
set
{
this._queryList = value;
}
}
public MainWindow()
{
InitializeComponent();
// Establish the Login control
Ctrl = new CrmLogin();
QueryList = new List<string>();
InitQueryList();
}
//Call to init the list data
private void InitQueryList()
{
_queryList.Add("Query queues with unapproved email routers");
_queryList.Add("Query queues with emails in pending send status");
}
Combobox绑定设置 -
<ComboBox HorizontalAlignment="Left" ItemsSource="{Binding QueryList}" Grid.Column="1" x:Name="queryComboBox" Grid.Row="0" VerticalAlignment="Bottom" Width="300" Visibility="Collapsed" Text="Select a query"/>
答案 0 :(得分:1)
您忘了设置DataContext:
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
// Establish the Login control
Ctrl = new CrmLogin();
QueryList = new List<string>();
InitQueryList();
}
答案 1 :(得分:0)
试试这个:
public MainWindow()
{
// Establish the Login control
QueryList = new List<string>();
InitQueryList();
InitializeComponent();
Ctrl = new CrmLogin();
}
答案 2 :(得分:0)
首先,如果您使用的是代码隐藏方法MVC,那么您需要使用
更新数据源comboBox1.DataSource = QueryList;
否则,如果您使用的是标准MVVM格式,则需要使用
INotifyPropertyChanged的
否则您需要使用
的ObservableCollection
这是因为在初始化时,_querylist的null值会被绑定。现在当你的查询列表得到更新时,这并没有反映在你的视图中,因为View没有得到任何通知或事件声明已经对viewmodel(你的绑定项目)进行了更改