私はの形式であるカスタムObservableDictionaryに結合するCollectionViewSourceていますWPFトリガーCollectionViewSourceの更新から別のプロパティの変更
public class Waypoint
{
public string Name { get; set; }
public float X { get; set; }
public float Y { get; set; }
public float Z { get; set; }
}
:
ObservableDictionary<int, List<Waypoint>>
ウェイポイントのインスタンスは、の形式であります
同じビューモデル内で、私は別のプロパティ 'MapId'を持っています。これは、プレイヤーがマップ間を移動するにつれて更新されます。このObservableDictionaryインスタンスをListBoxにバインドして、mapidに基づいて与えられたマップのウェイマップだけを表示しようとしています。 (辞書のintはマップIDです)
更新されている別のプロパティーバインディングに基づいて強制的にCollectionViewSourceを強制的に更新させる方法はありますか?
私はこれを可能な限りコードビハインドの少ないXAMLで主に実行しようとしています。
ここに私が現在持っているもののいくつかがあります。私の見解では
:
<CollectionViewSource x:Key="WaypointCollection" Filter="WaypointCollection_OnFilter" Source="{Binding Waypoints, Source={StaticResource Configurations}}"
/>
私の見解では、コードビハインド(フィルター):
private void WaypointCollection_OnFilter(object sender, FilterEventArgs e)
{
var main = SimpleIoc.Default.GetInstance<MainViewModel>();
if (main == null)
{
e.Accepted = false;
return;
}
var waypoint = (KeyValuePair<int, List<Waypoint>>)e.Item;
var zone = main.Player.ZoneId;
e.Accepted = waypoint.Key == zone;
}