【发布时间】:2012-07-04 19:29:55
【问题描述】:
我有一个 Observable Collection,我正在尝试将其绑定到 ItemsControl。以下是我的代码中的 sn-p。
类 Sample.ViewModel:
//Observabale collection getter/setter property
public ObservableCollection<SQuestion> SList
{
get
{
return _sList;
}
set
{
if (_sList == value)
return;
_sList = value;
if(PropertyChanged!=null)
PropertyChanged(this, new PropertyChangedEventArgs("ListOfSamples"));
}
}
.xaml 代码:
查看/Mainwindow.xaml
<ItemsControl Height="422" HorizontalAlignment="Left" Margin="12,12,0,0" Name="listBox1" VerticalAlignment="Top" Width="751" ItemsSource="{Binding SList}" ItemTemplate="{StaticResource perItemTemplate}"/>
在上面的代码中,我指定了 ItemsSource 绑定,但在运行我的应用程序时,列表没有出现在 ItemsControl 中,并且所有内容都显示为空白。:
但是,如果我尝试从我的 .cs 代码隐藏中将源分配给列表框 listBox1.ItemsSource = SList,列表框将被填充并按预期工作。
有人可以指出上面我正在做的绑定问题是什么,以便我可以直接从 xaml 绑定而不使用代码隐藏?
【问题讨论】:
-
您如何/在哪里为您的主窗口设置
DataContext?运行时 VisualStudio 的输出窗口中是否有任何绑定错误?顺便说一句,当你提出PropertyChanged时,你应该使用你的财产名称,例如:你应该写new PropertyChangedEventArgs("SList") -
@nemesv:我在加载应用程序时添加了这一行 -
this.DataContent = _collection.SList;,这使得应用程序运行良好。但是,我不知道DataContext和您指出的另一件事。你能传递一个链接,我可以快速学习这个。 (WPF 相关的初学者)