我试图在列中将项绑定到ListView。
XAML:
<Grid>
<ListView x:Name="songList">
<ListView.View>
<GridView>
<GridViewColumn Header="Title" Width="200" DisplayMemberBinding="{Binding Title}"/>
</GridView>
</ListView.View>
</ListView>
</Grid>代码背后:
public List<MediaItem> mIList = new List<MediaItem>();
void refresh()
{
songList.Items.Clear();
foreach (KeyValuePair<int, Library.MediaItem> i in ActiveLibrary.Items)
{
Library.MediaItem item = i.Value;
mIList.Add(new MediaItem() { Title = item.Title });
}
songList.ItemsSource = mIList;
}
public class MediaItem
{
public string Title { get; set; }
}当调用刷新时,我希望MediaItem的标题显示在它自己的列中(以便以后可以添加其他属性)。
目前,GridView只显示了ToString()结果:

其他问题暗示解决方案与DataContext有关,但我没有发现任何可行的方法。
谢谢。
发布于 2016-06-22 16:32:03
好吧-我终于解决了。
我离开了这个项目一段时间,专注于学习MVVM设计模式,并摆脱了旧的WinForms习惯。
当MediaItem类继承INotifyPropertyChanged (并在属性的setter中引发PropertyChanged )时,这将按照预期的方式工作。
我不完全确定为什么这是必要的,但它解决了这个问题。
发布于 2016-05-25 13:51:14
将其放在构造函数中: this.DataContext = this;
this.DataContext = this;在XAML中:
<ListView x:Name="songList" ItemsSource="mIList">使用ObservableCollection而不是List。
然后,在刷新方法中,不需要第一行和最后一行。
https://stackoverflow.com/questions/37438502
复制相似问题