我有一个GridView与GridViewDataColumn从中我想过滤其中的布尔值,但我不想它写“真”或“假”在过滤器中,但‘VRAI’和‘人造’(法国)覆盖GridView中的默认布尔值过滤WPF,应用自定义布尔过滤器
目前过滤器自动完成(打印‘真’与‘假’,它过滤器),我无法访问布尔值的ToString()方法。 在我的代码后面我加载模型,并设置我的过滤器,如果“Filtersettings”不为空(当用户已保存其参数,很少发生)
我的XAML,我要筛选的列“Intégrée”
<telerik:GridViewColumn MinWidth="33">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
[Some Stuff]
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
[I deleted some stuff here]
</telerik:GridViewColumn>
<Style.Triggers>
<DataTrigger Binding="{Binding Valide}" Value="False">
<Setter Property="telerik:GridViewCell.Background" Value="{StaticResource ValidationErrorColorBrush}" />
</DataTrigger>
</Style.Triggers>
</Style>
</telerik:GridViewDataColumn.CellStyle>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Intégrée" UniqueName="Intégrée" DataMemberBinding="{Binding IsIntegree, Mode=OneWay}" ShowDistinctFilters="True"/>
我隐藏
public partial class DemandeCotationListeView : UserControl
{
public DemandeCotationListeView()
{
InitializeComponent();
DemandeCotationListeViewModel demandeCotationViewModel = new DemandeCotationListeViewModel();
DataContext = demandeCotationViewModel;
// Apply personalized filters
for (int cpt = 2; cpt < GridView.Columns.Count; cpt++)
{
GridView.Columns[cpt].FilteringControl = new PersonalizedFilteringControl(GridView.Columns[cpt]);
}
//Here I tried to access the filters
Telerik.Windows.Controls.GridViewColumn isIntegreeColumn = this.GridView.Columns["Intégrée"];
IColumnFilterDescriptor integreeFilter = isIntegreeColumn.ColumnFilterDescriptor;
//I can't add a string but an object
// integreeFilter.DistinctFilter.AddDistinctValue("Faux");
}
private void GridView_Loaded(object sender, RoutedEventArgs e)
{
try
{
IList<FilterSetting> filtersSettings = JsonConvert.DeserializeObject<IList<FilterSetting>>(Settings.Default.DemandeCotationViewFilterConfig);
//Never goes here because filterSettings is always null
if (filtersSettings != null)
{
foreach (FilterSetting filterSetting in filtersSettings)
{
IColumnFilterDescriptor filter = GridView.Columns[filterSetting.ColumnUniqueName].ColumnFilterDescriptor;
foreach (object distinctValue in filterSetting.SelectedDistinctValues)
{
if (distinctValue.GetType() == typeof(bool))
{
bool value = (bool)distinctValue;
if (value)
{
filter.DistinctFilter.AddDistinctValue("Vrai");
}
else
{
filter.DistinctFilter.AddDistinctValue("Faux");
}
}
else
{
filter.DistinctFilter.AddDistinctValue(distinctValue);
}
}
if (filterSetting.Filter1 != null)
{
filter.FieldFilter.Filter1.Operator = filterSetting.Filter1.Operator;
filter.FieldFilter.Filter1.Value = filterSetting.Filter1.Value;
filter.FieldFilter.Filter1.IsCaseSensitive = filterSetting.Filter1.IsCaseSensitive;
}
filter.FieldFilter.LogicalOperator = filterSetting.FieldFilterLogicalOperator;
if (filterSetting.Filter2 != null)
{
filter.FieldFilter.Filter2.Operator = filterSetting.Filter2.Operator;
filter.FieldFilter.Filter2.Value = filterSetting.Filter2.Value;
filter.FieldFilter.Filter2.IsCaseSensitive = filterSetting.Filter2.IsCaseSensitive;
}
}
}
ColumnSetting columnsSetting = JsonConvert.DeserializeObject<ColumnSetting>(Settings.Default.DemandeCotationViewColumnConfig);
if (columnsSetting != null)
{
foreach (var kv in columnsSetting.ColumnPosition)
{
GridView.Columns[kv.Key].DisplayIndex = kv.Value;
}
}
}
catch (Exception exc)
{
MessageBox.Show("Chargement de la liste des contrats : " + exc.Message);
}
}
谢谢,我不知道为什么我没有想到这一点早。有效。 –
如果我想使用GridViewDataColumn的“默认”复选框,我该怎么办?这里设置的复选框不同于此(默认情况下会自动创建) –
如果您要自定义过滤器,则不使用默认设置 – mm8