【问题标题】:Override Boolean Filtering in GridView WPF, Apply Custom bool filter在 GridView WPF 中覆盖布尔过滤,应用自定义布尔过滤器
【发布时间】:2017-08-25 09:19:13
【问题描述】:

我知道我在这里问过完全相同的问题 (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;
}

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

【问题讨论】:

  • 复选框之间有什么区别?
  • 项目“checkbox”中有一个“check”,我不想要。 dataGridView 中的“默认”完全填充了软件颜色。我正在发布图片。
  • 这是我需要的 datagridView 的结果:ibb.co/nrTynQ 而不是“经典”复选框

标签: c# wpf xaml gridview telerik


【解决方案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>

【讨论】:

  • 谢谢!我不知道默认情况下它是 Windows8 主题。这就是为什么。我认为是 DataGridView 管理了从布尔值到复选框的“转换”。
猜你喜欢
  • 2018-01-31
  • 2017-10-05
  • 2021-02-24
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多