在 GridView WPF 中覆盖布尔过滤,应用自定义布尔过滤器

Override Boolean Filtering in GridView WPF, Apply Custom bool filter

我知道我在这里问过完全相同的问题 (),但结果不是预期的那样。 事实上,复选框应该是来自 DatagridView 的 "default" 而不是 "checkbox" 项。他们不一样。

此代码提供了一个复选框项目:

<telerik:GridViewDataColumn Header="Intégrée" UniqueName="Intégrée" DataMemberBinding="{Binding IsIntegree, Converter={StaticResource MyConverter}}" ShowDistinctFilters="True">
<telerik:GridViewDataColumn.CellTemplate>
    <DataTemplate>
        <CheckBox IsChecked="{Binding IsIntegree, Mode=TwoWay}"/>
    </DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>

这个提供了 GridViewDataColumn 中的一个复选框 "ThreeState"。查看结果不一样

<telerik:GridViewDataColumn Header="Intégrée" DataMemberBinding="{Binding IsIntegree, Mode=OneWay}" ShowDistinctFilters="True"/>

在后面的代码中,我确实更改了过滤器内的输出,但是不再有从字符串值 ("Vrai") 到行中的布尔值 ("True") 的绑定:

private void GridView_DistinctValuesLoading(object sender, GridViewDistinctValuesLoadingEventArgs e)
{
    var col = ((Telerik.Windows.Controls.RadGridView)sender).GetDistinctValues(e.Column, false);
    IEnumerable<string> enu = col.Cast<bool>().Select(t => t.ToString());
    ICollection<string> distinctValues = enu.ToList();
    distinctValues.Clear();
    distinctValues.Add("Vrai");
    distinctValues.Add("Faux");
    e.ItemsSource = distinctValues;
}

如何将字符串值绑定到行中的布尔值以过滤我的行?

您可以将正在使用的任何 Telerik 主题应用到 CheckBox:

<telerik:GridViewDataColumn Header="Intégrée" UniqueName="Intégrée" DataMemberBinding="{Binding IsIntegree, Converter={StaticResource MyConverter}}" ShowDistinctFilters="True">
    <telerik:GridViewDataColumn.CellTemplate>
        <DataTemplate>
            <CheckBox IsChecked="{Binding IsIntegree, Mode=TwoWay}">
                <CheckBox.Style>
                    <Style TargetType="CheckBox">
                        <Style.Resources>
                            <telerik:Windows8Theme x:Key="Theme" />
                        </Style.Resources>
                        <Setter Property="telerik:StyleManager.Theme" Value="{StaticResource Theme}"/>
                    </Style>
                </CheckBox.Style>
            </CheckBox>
        </DataTemplate>
    </telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>