0

これは私のグローバルクラスです

public class Globals
{
    private static Globals instance = new Globals();

    protected Globals()
    {

    }

    public static Globals Instance
    {            
        get { return instance; }
    }

    public TrackList Tracklist = new TrackList();
}

これはスマート コードの TrackList です。

public class TrackList : SettingAttribute {
    public TrackList()
    {
        this.tracks = new ObservableCollectionExt<Track>();
    }

    protected ObservableCollectionExt<Track> tracks;

    public ObservableCollectionExt<Track> Tracks
    {
        get
        {
            return tracks;
        }
    }

    public class Track : ICloneable
    {
        protected Track()
        {
            // Track instance is achieved by GetTrack
        }

        public GetTrack(string path)
        {
            // code implementation here
        }
    }
}

XAML を使用して ListView に Globals.Instance.Tracklist.Tracks をバインドしたいと考えています。

ランタイム経由で、ItemSource プロパティを使用すると非常に簡単です

lv.ItemsSource = Globals.Instance.Tracklist.Tracks;

しかし、xamlを使用していくつかのコードを試しましたが、どれもうまくいきませんでした。

4

2 に答える 2

0
ItemsSource="{Binding Tracklist.Tracks, Source={x:Static local:Globals.Instance}}"

トラックリストはプロパティでなければなりません。Globals クラスを次のように変更します。

public class Globals
{
    private static Globals instance = new Globals();

    protected Globals()
    {
        Tracklist = new TrackList();
    }

    public static Globals Instance
    {
        get { return instance; }
    }

    public TrackList Tracklist { get; private set; }
}
于 2012-09-07T10:48:52.250 に答える
0

ビュー モデルでは、次のようにグローバル タイプのプロパティを作成します。

    property Globals Globals {get;set;}

XAML でそれにバインドします。

    <ListView ItemsSource="{Binding Path=Globals.Instance.Tracklist.Tracks}">
于 2012-09-07T10:49:13.700 に答える