You can do data entry in a data grid. You just wind up writing a lot more code and it gets very difficult to extend as soon as the user comes up with something weird.
And, you're always sitting "at the bottom" when adding a new record.
Combine the two: e.g.
CTRL+N: pops up the form for a new record.
PF5: pops up a form for the current record in grid (edit)
CTRL+D: delete the current record in grid.
CTRL+S: Save the current form / record (keep form open if in "data entry mode")
ESC: release the form.
Extra credits: Navigate in form.
(Keyboard preview key down and handled at the "form" / window / user control level)
"(I) am amazed to see myself here rather than there ... now rather than then".
― Blaise Pascal
Could you please help me figure out how I could bind "SelectedItems" of a listbox?
Here I have a 'listbox_2' that contains a list of fruits and vegetables
There's another 'listbox_1' that contains groups of fruits and vegetables (under a list<of string=""> format...maybe is it my first error? Should it rather be a list of fruits/vegetables?) and a recipe.
I would like that on each group selection (in listbox_1), the corresponding fruits and vegetables would be selected (in listbox_2)...and make it possible to modify that list
As far as I can see, the Microsoft version has been abandoned.
The GitHub fork is more up-to-date, but it hasn't been updated since July 2017. It also has no documentation, since they were relying on the CodePlex documentation for the original Microsoft version.
There are some suggestions for alternatives - both free and commercial - in this StackOverflow thread[^]. A lot of the answers are quite old, but the top answer was edited a couple of weeks ago, so it's hopefully still relevant.
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
In my utility WPF library I (reinvented the wheel, yeah yeah, I know..) created a Behaviors attached property of type BehaviorList.
static DependencyPropertyKey BehaviorsKey = DependencyProperty.RegisterAttachedReadOnly(
"PrivateBehaviors", // REMARK: name is different from property to force GetBehaviors() calltypeof(BehaviorList),
publicstatic DependencyProperty BehaviorsProperty = BehaviorsKey.DependencyProperty;
publicstatic BehaviorList GetBehaviors(DependencyObject target)
var result = (BehaviorList)target.GetValue(BehaviorsProperty);
if (result == null)
result = new BehaviorList(target);
then I used this property in XAML to add my own custome behavior type:
This works well and good (at runtime) but the designer has red underlines and show the following errors:
Error XLS0503, A value of type 'DragLayerGroupBehavior' cannot be added to a collection or dictionary of type 'BehaviorList'.
Error XDG0048, The specified value cannot be assigned to the collection. The following type was expected: "Behavior".
So the question is, how to "solve" those errors, i.e. unconfused VisualStudio WPF designer?
Is there a particular interface I need to implement, some attribute to use, or something?
I have four controls in a horizontal row.
The first and third control shouöd automatically resize and fill the available space when resizing the MainWindow. The second and forth controls have a static width and I don't want them to change horizontally in size. All four controls should fill vertically.
I have almost solved it with an UniformGrid as container for the four controls.