我知道我在这里问过完全相同的问题(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值绑定到行中的布尔值以过滤我的行?
答案 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>