1

私は WPF と Infragistics を初めて使用します。XamGrid とフィルターを含む小さな WPF プロジェクトがあります。グリッド内の列の 1 つのフィルタ リストから equals オペランドを削除したいと考えています。このコードは、Infragistics フォーラムからオンラインで見つけました。

FilterColumnSettings fcs = 
this.MyDataGrid.Columns.DataColumns["ProductID"].FilterColumnSettings;
fcs.RowFilterOperands.Remove(ComparisonOperator.Equals);

これはまさにそれを行うことになっていますが、私はそれを機能させることができません。アプリケーションが読み込まれると、equals フィルター オプションがまだ存在します。間違った場所からコードを呼び出していますか? これは私が書いたものです:

public MainWindow()
    {
        InitializeComponent();
        FilterColumnSettings fcs = this.xamGrid.Columns.DataColumns["ProductID"].FilterColumnSettings;
        fcs.RowFilterOperands.Remove(ComparisonOperator.Equals);
    }

これは、私の XAML コードの XamGrid です。

<ig:XamGrid 
        x:Name="xamGrid" 
        ItemsSource="{Binding}" 
        ColumnWidth="*" 
        AutoGenerateColumns="False" >

        <ig:XamGrid.FilteringSettings>
            <ig:FilteringSettings AllowFiltering="FilterRowTop" />
        </ig:XamGrid.FilteringSettings>

        <ig:XamGrid.Columns>
            <ig:TextColumn Key="ProductID" HeaderText="Product ID" />
        </ig:XamGrid.Columns>
</ig:XamGrid> 

どんな助けでも大歓迎です!

編集:フィルターを追加すると、次のエラーが発生し続けました:

System.NullReferenceException: 'オブジェクト参照がオブジェクトのインスタンスに設定されていません。' Infragistics.Controls.Grids.ReadOnlyKeyedColumnBaseCollection.this[string].get は null を返しました。

このエラーを克服するために、次のリンクの解決策に従いまし。私のために働いた解決策は次のとおりです:

this.xamGrid.DataObjectRequested += new EventHandler<DataObjectCreationEventArgs>(xamGrid_DataObjectRequested);

public void xamGrid_DataObjectRequested(object sender, DataObjectCreationEventArgs e)
    {
        if (e.ObjectType == typeof(DataRowView))
        {
            DataTable dt = new DataTable();
            DataRow r = dt.NewRow();
            dt.Rows.Add(r);
            DataRowView drv = dt.DefaultView[dt.Rows.IndexOf(r)];
            e.NewObject = drv;
        }
    }

これにより、XamGrid でフィルタリング オプションを使用できるようになりましたが、フィルター オペランドの変更で問題が発生する可能性はありますか?

ありがとう!

4

1 に答える 1