0

タイトルにあるように、 の複数のインスタンスでアイテムの総数を見つけてObservableCollection、結果を にバインドしようとしていTextblockます。LINQ経由で正しい番号を取得できました...

public WorldViewModel(GameContainer container)
{
    GlobalPopulation = container.Regions
            .SelectMany(x => x.Settlements)
            .SelectMany(x => x.Population)
            .Distinct()
            .Count();
}

public int GlobalPopulation { get; set; }

...しかし、LINQ は XAML バインディングではうまく機能しません。初期値は正しく表示されますが、カウントが変化しても更新されません。ビューモデルの新しいインスタンスを作成すると、コンストラクターが再度呼び出されるため、新しい番号が表示されます。私のビューモデルは MVVM の ViewModelBase を継承し、Kind of Magic を介して INPC を実装しています。適切にバインドされ、期待どおりに動作する他のプロパティがあるので、それは問題ではありません。

OLinq や BindableLinq などのツールを使用してみましたが、うまくいきませんでした。今のところ、LINQ なしでこれを行う必要があるように見えますが、残念ながら、LINQ なしで同じ値を取得して にバインドする方法がわかりませんTextblock。この状況で LINQ バインディングを機能させる方法、または LINQ を使用せずに同じ結果を達成する方法を誰かに教えていただければ、非常にありがたいです。

4

2 に答える 2

0

これを変える:

public int GlobalPopulation { get; set; }

これに:

private int _globalPopulation;
public int GlobalPopulation 
{ 
    get { return _globalPopulation; }
    set
    {
        _globalPopulation = value;
        NotifyPropertyChange("GlobalPopulation");
    }
}
于 2013-09-05T20:37:31.083 に答える