private void MenuItem_Click(object sender, RoutedEventArgs e)
        {
            MenuItem mi = null;

            if (sender is MenuItem)
            {
                mi = sender as MenuItem;
            }

            if (mi != null)
            {
                var itemText = mi.Header as string;
                if (itemText == "Delete")
                {
                    var model = lvScreenDefn.SelectedItem as IScreenDefn;
                    if (model != null)
                    {
                        var ix = this.ScreenDefnObservableList.IndexOf(model);
                        this.ScreenDefnObservableList.Remove(model);
                    }
                }

                else if (itemText == "Change")
                {
                    // the item source of the list view is ScreenDefnObservableList
                    var defn = lvScreenDefn.SelectedItem as IScreenDefn;
                    if (defn != null)
                    {
                        var ix = this.ScreenDefnObservableList.IndexOf(defn);

                        // prompt for screen name and namespace to add.
                        var wdw = new AddScreenDefnWindow();
                        wdw.WorkScreenDefnModel =
                            new WorkScreenDefnModel(ActionCode.Change, defn);
                        var rv = wdw.ShowDialog();

                        // entry completed. add new screenDefn.
                        if (rv == true)
                        {
                            this.ScreenDefnObservableList.Remove(defn);
                            var addDefn = wdw.WorkScreenDefnModel.ToScreenDefn();
                            this.ScreenDefnObservableList.Add(addDefn);

                            lvScreenDefn.FindFocusItem(addDefn);
                        }
                    }
                }
            }
        }
        private void butAdd_Click(object sender, RoutedEventArgs e)
        {
            // prompt for screen name and namespace to add.
            var model = new WorkScreenDefnModel(ActionCode.Add);
            var wdw   = new AddScreenDefnWindow();

            wdw.WorkScreenDefnModel = model;
            var rv = wdw.ShowDialog();

            // entry completed. add new screenDefn.
            if (rv == true)
            {
                var defn = model.ToScreenDefn();
                this.ScreenDefnObservableList.Add(defn);
            }
        }
        private void lvScreenDefn_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            var defn = lvScreenDefn.SelectedItem as ScreenDefn;

            if (defn != null)
            {
                var ix = this.ScreenDefnObservableList.IndexOf(defn);

                // prompt for screen name and namespace to add.
                var wdw = new AddScreenDefnWindow();
                wdw.WorkScreenDefnModel = new WorkScreenDefnModel(ActionCode.Change, defn);
                var rv = wdw.ShowDialog();

                // entry completed. add new screenDefn.
                if (rv == true)
                {
                    this.ScreenDefnObservableList.Remove(defn);
                    var addDefn = wdw.WorkScreenDefnModel.ToScreenDefn();
                    this.ScreenDefnObservableList.Add(addDefn);
                }
            }
        }