首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF ListView GridViewColumn绑定

WPF ListView GridViewColumn绑定
EN

Stack Overflow用户
提问于 2016-05-25 13:20:12
回答 2查看 2.3K关注 0票数 0

我试图在列中将项绑定到ListView。

XAML:

代码语言:javascript
复制
<Grid>
<ListView x:Name="songList">
    <ListView.View>
            <GridView>
                <GridViewColumn Header="Title" Width="200" DisplayMemberBinding="{Binding Title}"/>
            </GridView>
        </ListView.View>
    </ListView>
</Grid>

代码背后:

代码语言:javascript
复制
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有关,但我没有发现任何可行的方法。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-22 16:32:03

好吧-我终于解决了。

我离开了这个项目一段时间,专注于学习MVVM设计模式,并摆脱了旧的WinForms习惯。

当MediaItem类继承INotifyPropertyChanged (并在属性的setter中引发PropertyChanged )时,这将按照预期的方式工作。

我不完全确定为什么这是必要的,但它解决了这个问题。

票数 0
EN

Stack Overflow用户

发布于 2016-05-25 13:51:14

将其放在构造函数中: this.DataContext = this;

代码语言:javascript
复制
this.DataContext = this;

在XAML中:

代码语言:javascript
复制
<ListView x:Name="songList" ItemsSource="mIList">

使用ObservableCollection而不是List。

然后,在刷新方法中,不需要第一行和最后一行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37438502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档