I did this as an extension method to be able to use it everywhere I was using the XamDataGrid:
public static string GetFilterString(this XamDataGrid grid) {
var filters = new List();
foreach (var fieldLayout in grid.FieldLayouts) {
foreach (var filter1 in (from filter in fieldLayout.RecordFilters where filter.Conditions.Count > 0 select filter)) {
if (filter1.Conditions.Count > 1) {
var conditionOperator = Enum.GetName(filter1.Conditions.LogicalOperator.GetType(), filter1.Conditions.LogicalOperator);
var multiCondition = filter1.Field.Label + " " + string.Join(" " + conditionOperator + " ", filter1.Conditions);
filters.Add("(" + multiCondition + ")");
} else {
filters.Add(string.Format("{0} {1}", filter1.Field.Label, filter1.Conditions[0]));
}
}
}
return filters.Count > 0 ? "Current filters: " + string.Join(" And ", filters) : "Current filters: None";
}
So, now I can implement (in the code-behind) like this:
myGrid.RecordFilterChanged += (sender, args) => { myLabel.Content = myGrid.GetFilterString();