public void CopyTo(WorkListFilter filter)
        {
            using (var ms = new MemoryStream())
            {
                XmlSerializer xs = new XmlSerializer(typeof(WorkListFilter));
                xs.Serialize(ms, this);
                ms.Position = 0;

                StreamReader sr = new StreamReader(ms);
                XmlReader xr = XmlReader.Create(sr);
                xr.Read();
                xr.MoveToElement();
                xr.MoveToContent();
                filter.ReadXml(xr);
            }
        }
        public void ApplyFilter(WorkListFilter filter, object sender)
        {
            WorklistViewModel viewModel = (WorklistViewModel)DataContext;
            if ((viewModel != null) && (viewModel == sender))
            {
                viewModel.Filter = filter;
                viewModel.CreateNodes();
            }

            RefreshTree();
        }
        public static void CreateNodes(CaseList caseList, CaseListItem root, WorkListFilter filter)
        {
            CaseListItem caseNode = null;

            root.Slides.Clear();

            foreach (Case caseItem in caseList.Cases)
            {
                caseNode = null;

                if (filter == null)
                {
                    caseNode = new CaseListItem(caseItem);
                }
                else
                {
                    if (filter.MatchCase(caseItem) != WorkListFilterParameter.FilterMatchType.NotMatch)
                    {
                        caseNode = new CaseListItem(caseItem);
                    }
                }

                if (caseNode != null)
                {
                    // todo: add children using cached data

                    // create place holder if no children
                    if (caseNode.Slides.Count == 0)
                    {
                        caseNode.Slides.Add(new CaseListItem { Kind = CaseListItemKind.PlaceHolder });
                    }

                    root.Slides.Add(caseNode);
                }

            }
        }
 bool OnActiveWorklistFilterEdit(WorkListFilter filter)
 {
     WorklistFilterEditWindow window = new WorklistFilterEditWindow(new WorklistFilterEditViewModel(filter));
     window.Owner = this;
     window.ShowDialog();
     return (window.DialogResult.HasValue && window.DialogResult.Value);
 }