Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update combobox.md for IsEditable changes #633

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

almightyju
Copy link

This is for AvaloniaUI/Avalonia#18094 so only merge if that pull request is accepted 😄

I'm not sure of how best to record an image for the example I've added but can happily add if someone is willing to make one?

@@ -125,6 +127,28 @@ namespace AvaloniaControls.Views

<img src={ComboBoxDataTemplateScreenshot} alt="" />

When using `IsEditable` with complex types it is important to set either `DisplayMemberBinding` or `TextSearch.TextBinding`, or both.
A complex example of the editable text using `Id` to match items when typing in text, but the showing `DisplayValue` in the dropdown is found below:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this needs to be reworded. It took me a few tries to parse it. Perhaps:

Suggested change
A complex example of the editable text using `Id` to match items when typing in text, but the showing `DisplayValue` in the dropdown is found below:
The below example uses a property named `Id`, to match items when typing in text to a `ComboBox` that has `IsEditable` set to true. The display value in the `ComboBox` will be the bound `DisplayValue` value:

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah this one is tricky without a visual, I went thought a few iterations myself. Basically in that example:

  • Items in the open dropdown will display using DisplayMemberBinding
  • The editable portion (i.e. TextBox) will select items that match TextSearch.TextBinding and also display the value using TextSearch.TextBinding

Does listing those bullet points make more sense how it works to you?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is certainly an improvement. If you do go with that, I would suggest a slight change:

Say "will select an item that matches" instead of "selects items", as it makes it sounds like it will match multiple values at once.

@@ -125,6 +127,28 @@ namespace AvaloniaControls.Views

<img src={ComboBoxDataTemplateScreenshot} alt="" />

When using `IsEditable` with complex types it is important to set either `DisplayMemberBinding` or `TextSearch.TextBinding`, or both.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What happens if you don't?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It'll throw an error

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would say that should be mentioned somewhere then.

```

```csharp title='C#'
public record ComplexItem(int Id, string DisplayValue);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I generally suggest people avoid using newer C# features like records for docs. Avalonia technically supports all the way back to .NET 4.8, which means people may have to rewrite the code if they are trying to use it there.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point, I was trying to make the c# part concise, I'll update to use a class instead

A complex example of the editable text using `Id` to match items when typing in text, but the showing `DisplayValue` in the dropdown is found below:

```xml
<ComboBox PlaceholderText="Editable" IsEditable="true"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Put IsEditable on a different line like the rest of the properties are. It makes it a lot more readable. I almost missed it was there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants