ObservableCollection<T>
をでTreeView
(またはその他のコントロールについては)にバインドしようとしています。 ValueConverterでは、AsHierarchy
拡張子(scip.be)を使用して自己参照(各エンティティにはParentIdフィールドがあります)を階層に変換します。ObservableCollectionにバインドして、ValueConverterを使用しています
前述のように、私はValueConverterを使用しないときにリストの更新がビュー(GUI)に反映されるObservableCollection<T>
の内部に私の(平らなリストの)エンティティを格納します。
ValueConverter
を追加した場合、アップデートは私のビューにもう反映されません。値コンバータ内にブレークポイントを設定すると、それ以降のすべてのCollectionChangedイベントは無視されます。 ValueConverterの
ソースコード:私は、コンバータをバインド
public class HierarchyValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null) return null;
ObservableCollection<Entity> data = (ObservableCollection<Entity>)value;
return data.AsHierarchy(p => p.Id, p => p.ParentId);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
のItemsSource:
ItemsSource="{Binding Data,
Source={StaticResource MyDataSource},
Converter={StaticResource HierarchyValueConverter}}"
この1の今かなりの時間が私を盗聴するので、私は、誰かが答えを提供することを願って。
ありがとうございます!
値コンバータを接続したXAMLを送信してください。 – Paparazzi