我的组合框绑定到一组枚举。我试图过滤掉一些显示的枚举。
我尝试了以下内容,但它没有过滤掉任何内容,只是返回原始集合。
<telerik:GridViewComboBoxColumn Header="Occurences"
ItemsSource="{Binding Source={StaticResource ScheduleItems},
Converter={StaticResource ScheduleItemsEnumConverter}, Mode=OneWay}" />
public class ScheduleItemsEnumConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var collection = ((IEnumerable<LoanCalculator.ScheduleItems>)value).Cast<LoanCalculator.ScheduleItems>();
collection =
collection.Where(
x =>
!x.Equals(LoanCalculator.ScheduleItems.CapitalizedFee) ||
!x.Equals(LoanCalculator.ScheduleItems.CapitalizedInsurance) ||
!x.Equals(LoanCalculator.ScheduleItems.CapitalizedInterest));
return collection;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
我知道where子句是可以的,因为填充组合框的其他方法工作正常。
public IEnumerable<LoanCalculator.ScheduleItems> EventTypes
{
get
{
return
Enum.GetValues(typeof(LoanCalculator.ScheduleItems))
.Cast<LoanCalculator.ScheduleItems>()
.Where(
x =>
!x.Equals(LoanCalculator.ScheduleItems.CapitalizedFee) ||
!x.Equals(LoanCalculator.ScheduleItems.CapitalizedInsurance) ||
!x.Equals(LoanCalculator.ScheduleItems.CapitalizedInterest));
}
}
请问我如何将转换器应用于状态资源或转换枚举集
答案 0 :(得分:1)
你的逻辑错了。你想“和”条件不是“或”他们。您也不需要Cast<LoanCalculator.ScheduleItems>
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return ((IEnumerable<LoanCalculator.ScheduleItems>)value)
.Where(
x =>
!x.Equals(LoanCalculator.ScheduleItems.CapitalizedFee) &&
!x.Equals(LoanCalculator.ScheduleItems.CapitalizedInsurance) &&
!x.Equals(LoanCalculator.ScheduleItems.CapitalizedInterest));
}