[英]WPF ListView GridViewColumn Binding
我試圖將項目綁定到列中的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; }
}
調用refresh時,我希望MediaItem的標題顯示在其自己的列中(以便以后可以添加其他屬性)。
目前,GridView僅顯示ToString()結果:
其他問題暗示該解決方案與DataContext有關,但是我還沒有發現任何可行的方法。
謝謝。
將其放入構造函數中:this.DataContext = this;
this.DataContext = this;
在XAML中:
<ListView x:Name="songList" ItemsSource="mIList">
使用ObservableCollection而不是List。
然后,在refresh方法中,您不需要第一行和最后一行。
好的-我終於解決了。
我離開了項目一段時間,專注於學習MVVM設計模式並擺脫了舊的WinForms習慣。
當MediaItem類繼承INotifyPropertyChanged(並在屬性的設置器中引發PropertyChanged)時,這將按預期工作。
我不確定為什么需要這樣做,但是可以解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.