我有一个这样的bitfield:
[Flags]
public enum EmployeeType
{
None = 0,
IsInOffice = 1,
IsManager = 2,
IsOnVacation = 4,
...
}
我的UI有一个所有员工的列表框,我想实现复选框来过滤列表。这个列表框绑定到一个过滤器属性,如下所示:
public IEnumerable<Employee> FilteredEmployees
=> _employees.Where(e => _regexFilter.IsMatch(e.FullName)
&& (!EmployeeType.HasFlag(EmployeeType.IsInOffice) || e.IsLoggedIn)
&& (!EmployeeType.HasFlag(EmployeeType.IsManager) || e.RoleID >= 4)
&& (!EmployeeType.HasFlag(EmployeeType.IsOnVacation) || TimeRec.GetStatusID(e.ID) == 7))
.OrderBy(e => e.FullName);
我现在的问题是,我不能从转换器中得到一个正确的返回值,因为所有标志的当前状态都是未知的,我也不能设法将所有标志的当前状态输入转换器。
我可以激活一个标志,但我无法在不停用或激活其他标志的情况下停用任何标志,这将是意外行为。
1条答案
按热度按时间vsdwdz231#
好像是用这个得到的:
转换器:
定针器:
不是100%肯定,如果这是一个黑客,只是在我的情况下工作,但好吧,它的作品:D