0

私は次のものを持っています:

public enum ValidationSeverity 
{
    Error   = 1,
    Warning = 2
}

Public class Errors
{
   public ValidationSeverity Severity { set; get; }
   public string Desc { set; get; }
}

ViewModel で定義された ObservableCollection で、それを SDK の DataGrid にバインドしました。これで、2 つのトグル ボタンができました。

  • エラーを表示
  • 警告を表示
  • -

[エラーを表示] をクリックすると、データ グリッドには、重大度が「エラー」である行だけが表示されます。「エラーを表示」をクリックすると、次のように ICollectionView を使用しようとしています。

    private void OnShowErrors()
    {
        if (IsErrorButtonChecked)
            Show(ValidationSeverity.Error);
        else
            Hide(ValidationSeverity.Error);
    }

    private void Hide(ValidationSeverity sev)
    {
        var lcv = _collectionViewSourceHelper.GetCollectionView(ErrorsList);
        if (lcv == null || !lcv.CanFilter) return;
        lcv.Filter = item =>
        {
            var error = item as Error;
            if (error == null) return false;

            return error.Severity != sev;
        };
    }

    private void Show(ValidationSeverity sev)
    {
        var lcv = _collectionViewSourceHelper.GetCollectionView(ErrorsList);
        if (lcv == null || !lcv.CanFilter) return;

        lcv.Filter = item =>
        {
            var error = item as Error;
            if (error == null) return false;

            return error.Severity == sev;
        };
    }

_collectionViewSourceHelper - これを追加しました。Silverlight では GetCollectionView を直接使用できないため、これをどのように行うことができるかが問題です。2 つの述語を書きましたが、collectionView を編集すると、見る?

ありがとう

4

1 に答える 1

0

ビューはコレクションの単なるラッパーです。コレクションを編集すると、コレクション ビューにも変更が反映されるため、基本的には ErrorList を編集する必要があります。

于 2013-09-10T11:52:27.487 に答える