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

时间:2017-08-25 09:19:14

标签: c# wpf xaml gridview telerik

我知道我在这里问过完全相同的问题(Override default Boolean Filtering in GridView WPF, Apply Custom bool filter)但结果不是预期的结果。 实际上,复选框应该是DatagridView中的“默认”复选框,而不是“复选框”项。它们不一样。

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

<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;
}

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

1 个答案:

答案 0 :(得分:1)

您可以将您正在使用的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>