Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF多个筛选器在DataGrid上不工作_C#_Wpf_Filter_Collectionview - Fatal编程技术网

C# WPF多个筛选器在DataGrid上不工作

C# WPF多个筛选器在DataGrid上不工作,c#,wpf,filter,collectionview,C#,Wpf,Filter,Collectionview,我有一个绑定到LogData类型的CollectionView LogDataView的DataGrid。对于dataGrid中的每个数据,我有两个过滤器,一个用于LogType,另一个用于LogDirection。我的问题是,如果我应用方向过滤器(ex RX),那么在LogType中,过滤器也会为TX消息返回true。所以现在我看到了RX和TX消息(理想情况下,我应该只看到RX)。 我使用按钮单击应用过滤器 我经历过,但没有帮助。 请建议 XAML <DataGrid Name="dgL

我有一个绑定到LogData类型的CollectionView LogDataView的DataGrid。对于dataGrid中的每个数据,我有两个过滤器,一个用于LogType,另一个用于LogDirection。我的问题是,如果我应用方向过滤器(ex RX),那么在LogType中,过滤器也会为TX消息返回true。所以现在我看到了RX和TX消息(理想情况下,我应该只看到RX)。 我使用按钮单击应用过滤器

我经历过,但没有帮助。 请建议

XAML

<DataGrid Name="dgLogdata"  Margin="10" VerticalScrollBarVisibility="Visible" ItemsSource="{Binding LogDataView}"
                                      AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False" >                          
                                <DataGrid.Columns>
                                    <DataGridTextColumn Header="H" Binding="{Binding HData}" FontFamily="Arial"/>
                                    <DataGridTextColumn Header="Raw"   Binding="{Binding Hex}" FontFamily="Arial"/>
                                </DataGrid.Columns>
</DataGrid>

过滤器按其添加顺序应用。您需要同步这两个过滤器。也许使用一个变量

            private bool bLogDirFilter = true;
            private bool bLogLevelFilter = true;
过滤函数

private bool LogDirFilter(GUILogData m)
            {
                if (ELogDir == (byte)LogDirEnum.ELogDir_NONE)
                {
                    bLogDirFilter = true;
                    return true;
                }
                else if (ELogDir == m.LogDir)
                {
                    bLogDirFilter = true;
                    return true;
                }
                else
                {
                    bLogDirFilter = false;
                    return false;
                }
            }

            /*******LOG LEVEL FILTER*******/
            bool LogLevelFiler(GUILogData m)
            {
                if (bLogDirFilter && (ELogLevel == (byte)LogLevelEnum.ELogLevel_NONE))
                {
                    bLogLevelFilter = true;
                    return true;
                }
                else if (bLogDirFilter && (ELogLevel == m.LogLevel))
                {
                    bLogLevelFilter = true;
                    return true;
                }
                else
                {
                    bLogLevelFilter = false;
                    return false;
                }
            }

            private bool bLogDirFilter = true;
            private bool bLogLevelFilter = true;
private bool LogDirFilter(GUILogData m)
            {
                if (ELogDir == (byte)LogDirEnum.ELogDir_NONE)
                {
                    bLogDirFilter = true;
                    return true;
                }
                else if (ELogDir == m.LogDir)
                {
                    bLogDirFilter = true;
                    return true;
                }
                else
                {
                    bLogDirFilter = false;
                    return false;
                }
            }

            /*******LOG LEVEL FILTER*******/
            bool LogLevelFiler(GUILogData m)
            {
                if (bLogDirFilter && (ELogLevel == (byte)LogLevelEnum.ELogLevel_NONE))
                {
                    bLogLevelFilter = true;
                    return true;
                }
                else if (bLogDirFilter && (ELogLevel == m.LogLevel))
                {
                    bLogLevelFilter = true;
                    return true;
                }
                else
                {
                    bLogLevelFilter = false;
                    return false;
                }
            }