簡體   English   中英

WPF ListView GridViewColumn綁定

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM